Почему Protractor не может найти элемент (by.id ('mat-input-0'))? - PullRequest
0 голосов
/ 20 мая 2019

Я новичок в автоматизации, и я провожу очень простой тест, который работал нормально, но совсем недавно он перестал работать, и я продолжаю получать следующую ошибку:

Сбой: время ожидания сценария: результат не был получен в течение 11 секунд

Я посмотрел его, выполнил некоторую базовую отладку и обнаружил, что Protractor не находит элемент, на который я ссылаюсь (element(by.id('mat-input-0')) - подробнее ниже в файле кода spec.js).
Я использую последнюю версию Protractor (5.4.2), а также последнюю версию Jasmine (3.4.0). Я тестирую на последнем браузере Chrome.

Я пробовал много онлайн-решений (например, используя async / await, добавляя long allScriptsTimeout и defaultTimeoutInterval в файл конфигурации (как показано ниже), вызывая элемент, используя разные локаторы (по xpath, по id, по tagName, ...), пытаясь browser.waitForAngular(); или browser.ignoreSynchronization = true, ...), но ни один из них не сработал, так что мне интересно, есть ли у кого-нибудь мнение о том, что может быть решением? (или может в чем настоящая проблема?)

Элемент HTML

<input _ngcontent-mkt-c2="" class="mat-input-element mat-form-field-autofill-control cdk-text-field-autofill-monitored ng-pristine ng-invalid ng-touched" formcontrolname="email" matinput="" name="email" placeholder="Email" required="" type="text" id="mat-input-0" aria-invalid="true" aria-required="true">

Spec.js:

describe('Login', function(){
    it('test 1', async function(){
        await browser.get('the STG URL im testing');


    })
    it('set username', async function(){
        await element(by.id('mat-input-0')).sendKeys('root@user.com');


    })
    it('set password', async function(){
        await element(by.id('mat-input-1')).sendKeys('1234');
    })

})

Conf.js:

exports.config = {  
    seleniumAddress: 'http://localhost:4444/wd/hub',
    allScriptsTimeout: 80000,

    framework: 'jasmine',

    specs: ['spec.js'],

    SELENIUM_PROMISE_MANAGER: false,

    jasmineNodeOpts: {
      defaultTimeoutInterval: 50000
    }
  };

1 Ответ

0 голосов
/ 21 мая 2019

Может быть много причин для ошибки, которую вы получаете, но, как вы сказали, вы новичок в транспортире. Я бы сказал, сначала идти с легкими шагами.

После установки транспортира по всему миру. Ваша машина должна иметь папку в% appdata%. Перейдите в путь к каталогу AppData \ Roaming \ npm \ node_modules \ protractor \ example. В этом каталоге вы должны увидеть два файла conf.js и example_spec.js. В spec-файле замените url на ваш URL, а также проделайте то же самое для тестов.

Запустить конфигурационный файл без внесения в него изменений. и проверьте, работает ли он нормально, тогда есть некоторая проблема конфигурации.

Пожалуйста, пройдите Обучение транспортиру , чтобы узнать больше об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...