使用Java驱动程序,我可以在执行一项操作之前等待几种元素条件之一,例如:
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.or(
ExpectedConditions.elementToBeClickable(By.id("idNumber1")),
ExpectedConditions.elementToBeClickable(By.id("idNumber2"))
));
例如,当仅列出的那些元素之一可单击时,我们的wait
将结束。
但是,我找不到使用该驱动程序的Node.js版本执行此操作的方法。
答案 0 :(得分:2)
好的,尽管Selenium驱动程序的Node版本中没有便利的方法,但是我能够使用Promise.race来模拟ExpectedConditions.or
。
let item1 = By.id("idNumber1");
let item2 = By.id("idNumber2");
let result = await Promise.race(
[ driver.wait(until.elementLocated(item1, 5000)),
driver.wait(until.elementLocated(item2, 5000))
]).then((el) => {
if (el.getId() === 'idNumber1') {
return //something specific to item 1;
} else {
return //something specific to item 2;
}
}
);
console.log(result);
类似地,您可以使用Promise.all来模拟and
。