使用 Java 驱动程序,我可以在执行操作之前等待多个元素条件之一,如下所示:
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.or(
ExpectedConditions.elementToBeClickable(By.id("idNumber1")),
ExpectedConditions.elementToBeClickable(By.id("idNumber2"))
));
例如,当列出的其中一个元素可点击时,我们的等待
就会结束。
但是,我找不到使用 Node.js 版本的驱动程序来执行此操作的方法。
最佳答案
好吧,虽然 Selenium 驱动程序的 Node 版本中没有可用的便捷方法,但我可以使用 Promise.any 来模拟 ExpectedConditions.or
.
let item1 = By.id("idNumber1");
let item2 = By.id("idNumber2");
let result = await Promise.any(
[ 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 .
关于node.js - 相当于 ExpectedConditions.or 的 Node ,用于等待多个元素之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54523966/