节点相当于ExpectedConditions.or的等待许多因素之一

问题描述 投票:0回答:1

使用Java驱动程序,我可以等几个要素条件之一是采取行动,像这样前:

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.or(
    ExpectedConditions.elementToBeClickable(By.id("idNumber1")),
    ExpectedConditions.elementToBeClickable(By.id("idNumber2"))
)); 

例如,我们wait会当刚刚上市的元素之一是可点击过。

但是,我无法找到一个方法来做到这一点使用的驱动程序版本的Node.js。

node.js selenium selenium-webdriver
1个回答
2
投票

好吧,虽然没有在硒驱动程序的节点版本方便的方法,我可以用ExpectedConditions.or效仿Promise.race

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);

同样,仿效and你可以使用Promise.all

© www.soinside.com 2019 - 2024. All rights reserved.