Как ждать любого из двух элементов на странице, используя selenium xpath

У меня есть два элемента, я могу ждать, я хочу wait пока ни один из них не появится на странице.

Я пытаюсь использовать xpath локатор. Но это не работает.

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

Это достижимо?
Пожалуйста, помогите мне.

4 ответа

Можно подождать одного из двух элементов на странице, используя 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 выглядит действительным. Используйте явное ожидание для ожидания видимости

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[(contains(@id,'idNumber1')) or (contains(@id,'idNumber2'))]")));

Попробуйте этот Xpath:-

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

Пожалуйста, предоставьте несколько секунд wait перед переходом к этому коду, чтобы ваш драйвер мог найти веб-элемент.

Попробуй это xpath

//*[contains(@id, 'idNumber1') or contains(@id, 'idNumber2')]
Другие вопросы по тегам