Node.js 与ExpectedConditions.or等效的节点,用于等待多个元素之一
使用Java驱动程序,我可以在执行操作之前等待几个元素条件之一,如下所示:Node.js 与ExpectedConditions.or等效的节点,用于等待多个元素之一,node.js,selenium,selenium-webdriver,Node.js,Selenium,Selenium Webdriver,使用Java驱动程序,我可以在执行操作之前等待几个元素条件之一,如下所示: WebDriverWait wait=newwebdriverwait(驱动程序,10); 等待。直到(预期条件)或( ExpectedConditions.element可禁用(By.id(“idNumber1”), ExpectedConditions.element可禁用(By.id(“idNumber2”)) )); 例如,我们的等待将在列出的元素中只有一个可单击时结束 但是,我找不到使用Node.js版本的
WebDriverWait wait=newwebdriverwait(驱动程序,10);
等待。直到(预期条件)或(
ExpectedConditions.element可禁用(By.id(“idNumber1”),
ExpectedConditions.element可禁用(By.id(“idNumber2”))
));
例如,我们的等待
将在列出的元素中只有一个可单击时结束
但是,我找不到使用Node.js版本的驱动程序实现这一点的方法。好的,尽管Selenium驱动程序的Node版本中没有方便的方法,但我能够通过使用模拟
ExpectedConditions.或
类似地,要模拟
和
,您可以使用。好的,虽然Selenium驱动程序的节点版本中没有方便的方法,但我可以通过使用来模拟ExpectedConditions.或
类似地,要模拟
和,您可以使用。您是否尝试过使用.xpath(“/*[@id='idNumber1'或@id='idNumber2']”)来模拟”
?仔细想想,预期的条件需要单个元素,而不是数组,这是可能的。您是否尝试过使用.xpath(/*[@id='idNumber1'或@id='idNumber2'])来模拟
?仔细想想,预期的条件要求一个元素,而不是一个数组,这是可能的。
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);