так что теперь мой браузер работает в основном так, как задумано. Это в основном циклы по нескольким for
циклам для проверки нескольких сотен (или тысяч) комбинаций настроек.
Но в большинстве случаев каждая моя функция застревает в точке ожидания условия elementLocated
. Функции getElementText()
возвращают текст данного элемента, используя локатор xpath. Если данный элемент не может быть найден, он возвращает «нет данных». из-за очень часто обновляемого DOM мне пришлось обходить стандартным способом findElement()
. Функция следующая:
async function getElementText(xPathStringOfElement){
await console.log ('starting getElementText() ...');
let textOfElement = 'NO DATA';
await driver.wait(await until.elementLocated(By.xpath(xPathStringOfElement), 2000)).getText()
.then(async function (text0){
textOfElement = text0;
},async function (err0){
await console.log('ERROR: ' + err0);
await console.log('...')
await console.log('Wait for Element to be shown.')
await driver.sleep(1000);
await driver.wait(await until.elementLocated(By.xpath(xPathStringOfElement), 2000)).getText()
.then(async function (text1){
textOfElement = text1;
},async function (err1){
await console.log('ERROR: ' + err1);
});
});
return textOfElement;
}
Итак, я ожидаю, что это произойдет (и что будет успешно выполнено несколько сотен раз подряд), что если await driver.wait(await until.elementLocated(By.xpath(xPathStringOfElement), 2000)).getText()
ждет 2 секунды, функция переходит на async function (err0){
и выдает ошибки ... Но иногда и я не понимаю, почему getElementText()
застревает и ждет вечно.
У кого-нибудь есть идеи, как я могу улучшить свой код здесь?
Спасибо!