Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 与ExpectedConditions.or等效的节点,用于等待多个元素之一_Node.js_Selenium_Selenium Webdriver - Fatal编程技术网

Node.js 与ExpectedConditions.or等效的节点,用于等待多个元素之一

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版本的

使用Java驱动程序,我可以在执行操作之前等待几个元素条件之一,如下所示:

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