我有两个我可以等待的元素,我想wait
,直到它们中的任何一个出现在页面上。
我正在尝试使用xpath
定位器。但它没有用。
By.xpath("//*[(contains(@id,'idNumber1')) or (contains(@id,'idNumber2'))]"));
这可以实现吗?
请帮帮我。
答案 0 :(得分:1)
可以使用ExpectedConditions.or()
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.or(
ExpectedConditions.elementToBeClickable(By.id("idNumber1")),
ExpectedConditions.elementToBeClickable(By.id("idNumber2"))
));
您还可以使用逗号OR
对CSS选择器执行,
:
wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("#idNumber1, #idNumber2"));
答案 1 :(得分:0)
在转移到此代码之前,请提供几秒wait
,以便您的驱动程序可以找到该网络元素。
试试这个xpath
//*[contains(@id, 'idNumber1') or contains(@id, 'idNumber2')]
答案 2 :(得分:0)
xpath
看起来有效。使用显式等待来等待可见性
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[(contains(@id,'idNumber1')) or (contains(@id,'idNumber2'))]")));
答案 3 :(得分:0)
试试这个Xpath: -
By.xpath("//*[contains(@id,'idNumber1') or (contains(@id,'idNumber2'))]"))