3

我有两个可以等待的元素,我希望wait它们中的任何一个出现在页面上。

我正在尝试使用xpath定位器。但它不起作用。

By.xpath("//*[(contains(@id,'idNumber1')) or (contains(@id,'idNumber2'))]"));

这是可以实现的吗?
请帮帮我。

4

4 回答 4

6

可以使用以下命令等待页面中的两个元素之一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"));
于 2017-07-18T15:12:35.230 回答
0

试试这个 Xpath :-

By.xpath("//*[contains(@id,'idNumber1') or (contains(@id,'idNumber2'))]"))
于 2017-07-18T12:15:51.253 回答
0

xpath看起来有效。使用显式等待等待可见性

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[(contains(@id,'idNumber1')) or (contains(@id,'idNumber2'))]")));
于 2017-07-18T12:08:48.207 回答
0

请在移动到此代码之前提供几秒钟的wait时间,以便您的驱动程序可以找到网络元素。

尝试这个xpath

//*[contains(@id, 'idNumber1') or contains(@id, 'idNumber2')]
于 2017-07-18T12:07:01.900 回答