node.js - 相当于 ExpectedConditions.or 的 Node ,用于等待多个元素之一

标签 node.js selenium selenium-webdriver

使用 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/

相关文章:

python - 函数 driver.switchTo.frame() 在 Selenium 中不起作用

javascript - 在 Selenium 中使用 JavaScriptExecutor 和 Java - 它获取值但不将其显示在字段中

selenium - 无法将值解释为数组

javascript - Node.js事件循环理解(附图)

javascript - 使用 X509 证书验证 Docusign Connect 签名

node.js - Microsoft.AspNetCore.SpaServices由于 Node 模块map.d.ts而失败

java - 当我运行 Selenium 程序时,它显示错误,如何解决这个问题?

firefox - 在 Linux 上的 Jenkins 下运行的 WebDriver 测试中出现 NotConnectedException 错误

javascript - 如何修复 csv 到 json 转换器模块?

Python Selenium 从网站获取图像名称