我正在使用webdriverJS在chrome中进行一些自动化测试。
我正在等待一个元素在点击它之前显示在网页上,虽然我遇到的问题是元素在点击之前需要几秒钟才能显示,所以我需要让司机睡觉点击元素前几秒钟。我想知道如何使用webdriverJS的promises来实现这一点。
return driver.wait(until.elementLocated(By.className('elementName')), 5000)
.then(element => {
driver.sleep(2000);
element.click();
});
由于javascript是异步的,因此在睡眠之前尝试点击该元素,所以我想知道如何在webdriverJS中包含promises,以便点击仅在睡眠结束后发生。
答案 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()
}