Я предполагаю, что под "не работает" вы подразумеваете, что элемент не был найден.Два варианта:
Согласно документация , findElement
поднимает NoSuchElementException
, если элемент не найден.Таким образом, вы можете продолжать использовать findElement
и перехватить исключение через try
/ catch
.
В качестве альтернативы используйте findElements
, который возвращаетList
, и ветвь, основанная на том, были ли найдены.Как LuisGP указал , часто полезно избегать исключений.
Вариант 1:
try {
driver.findElement(By.id("com.simplemobiletools.gallery:id/dir_thumbnail")).click();
driver.findElement(By.id("com.simplemobiletools.gallery:id/medium_thumbnail")).click();
} catch (NoSuchElementException e) {
driver.findElement(By.id("com.offerup:id/circle")).click();
driver.findElement(By.id("com.offerup:id/done")).click();
}
Или, если выпредназначен для обработки по одному:
try {
driver.findElement(By.id("com.simplemobiletools.gallery:id/dir_thumbnail")).click();
} catch (NoSuchElementException e) {
driver.findElement(By.id("com.offerup:id/circle")).click();
}
try {
driver.findElement(By.id("com.simplemobiletools.gallery:id/medium_thumbnail")).click();
} catch (NoSuchElementException e) {
driver.findElement(By.id("com.offerup:id/done")).click();
}
Вариант 2 (если вы хотите обрабатывать их один за другим, вы сможете настроить, если вы хотитетолько первый результат):
List<WebElement> elements;
elements = driver.findElements(By.id("com.simplemobiletools.gallery:id/dir_thumbnail"));
if (element.size() == 0) {
driver.findElement(By.id("com.offerup:id/circle")).click();
} else {
elements.get(0).click();
}
elements = driver.findElements(By.id("com.simplemobiletools.gallery:id/medium_thumbnail"));
if (elements.size() == 0) {
driver.findElement(By.id("com.offerup:id/done")).click();
} else {
elements.get(0).click();
}