Как ждать любого из двух элементов на странице, используя 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')]