我有两个可以等待的元素,我希望wait
它们中的任何一个出现在页面上。
我正在尝试使用xpath
定位器。但它不起作用。
By.xpath("//*[(contains(@id,'idNumber1')) or (contains(@id,'idNumber2'))]"));
这是可以实现的吗?
请帮帮我。
我有两个可以等待的元素,我希望wait
它们中的任何一个出现在页面上。
我正在尝试使用xpath
定位器。但它不起作用。
By.xpath("//*[(contains(@id,'idNumber1')) or (contains(@id,'idNumber2'))]"));
这是可以实现的吗?
请帮帮我。
可以使用以下命令等待页面中的两个元素之一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"));
试试这个 Xpath :-
By.xpath("//*[contains(@id,'idNumber1') or (contains(@id,'idNumber2'))]"))
xpath
看起来有效。使用显式等待等待可见性
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[(contains(@id,'idNumber1')) or (contains(@id,'idNumber2'))]")));
请在移动到此代码之前提供几秒钟的wait
时间,以便您的驱动程序可以找到网络元素。
尝试这个xpath
//*[contains(@id, 'idNumber1') or contains(@id, 'idNumber2')]