在selenium webdriver中使用promises

时间:2018-05-03 07:19:04

标签: javascript selenium selenium-webdriver

我正在使用webdriverJS在chrome中进行一些自动化测试。

我正在等待一个元素在点击它之前显示在网页上,虽然我遇到的问题是元素在点击之前需要几秒钟才能显示,所以我需要让司机睡觉点击元素前几秒钟。我想知道如何使用webdriverJS的promises来实现这一点。

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

由于javascript是异步的,因此在睡眠之前尝试点击该元素,所以我想知道如何在webdriverJS中包含promises,以便点击仅在睡眠结束后发生。

1 个答案:

答案 0 :(得分:0)

根据webdriver documentation,sleep方法返回一个在达到时间时解析的promise。

您可以使用以下代码处理异步部分:

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

使用async / await功能:

const func = async driver => {
  const element = await driver.wait(until.elementLocated(By.className('elementName')), 5000)
  await driver.sleep(2000)
  element.click()
}