Использование обещаний в Selen Webdriver - PullRequest
0 голосов
/ 03 мая 2018

Я использую webdriverJS для автоматического тестирования в chrome.

В настоящее время я жду, пока элемент будет отображаться на веб-странице, прежде чем щелкнуть по нему, хотя проблема, с которой я столкнулся, заключается в том, что для отображения элемента требуется несколько секунд, поэтому мне нужен драйвер для перехода в спящий режим. за несколько секунд до нажатия на элемент. Мне было интересно, как я могу использовать обещания с webdriverJS для достижения этой цели.

return driver.wait(until.elementLocated(By.className('elementName')), 5000)
.then(element => {
  driver.sleep(2000);
  element.click();
});

Поскольку javascript является асинхронным, элемент пытается щелкнуть перед сном, поэтому мне было интересно, как я могу включить обещания в webdriverJS, чтобы щелчок происходил только после завершения сна.

1 Ответ

0 голосов
/ 03 мая 2018

Согласно документации веб-драйвера , метод сна возвращает обещание, которое разрешается при достижении времени.

Вы можете обработать асинхронную часть с помощью этого кода:

let element
return driver.wait(until.elementLocated(By.className('elementName')), 5000)
 .then(_element => { 
   element = _element
   return driver.sleep(2000)
  })
 .then(() => element.click())

С функцией асинхронного ожидания / ожидания:

const func = async driver => {
  const element = await driver.wait(until.elementLocated(By.className('elementName')), 5000)
  await driver.sleep(2000)
  element.click()
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...