Я новичок в автоматизации, и я провожу очень простой тест, который работал нормально, но совсем недавно он перестал работать, и я продолжаю получать следующую ошибку:
Сбой: время ожидания сценария: результат не был получен в течение 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
}
};