如何使用selenium xpath

时间:2017-07-18 11:59:50

标签: java selenium selenium-webdriver xpath webdriverwait

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

我正在尝试使用xpath定位器。但它没有用。

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

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

4 个答案:

答案 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'))]"))