Это зависит от того, что вы подразумеваете под видимым.Если вы имеете в виду .isDisplayed()
, то все OPTION
видны (согласно Selenium), независимо от того, видны они на самом деле или нет.
Например, перейдите на http://the -internet.herokuapp.com/ dropdown и убедитесь, что на этой странице есть элемент SELECT
, который содержит два OPTION
s, «Option 1» и «Option 2».Если вы обнаружите их с помощью Selenium и вернете .isDisplayed()
, они оба вернут true
, хотя в состоянии по умолчанию ни один из них не выбран (и не виден пользователю).
I think что вы действительно ищете, так это то, существуют ли они в списке опций.Если это то, что вы имеете в виду, мы можем это определить.Функция ниже была создана для запуска по ссылке выше.Он получает список параметров в раскрывающемся списке, извлекает текст каждого из них, а затем сравнивает строку, которую вы передаете, чтобы выяснить, является ли она доступной.
public static boolean optionExists(String option)
{
return new Select(driver.findElement(By.id("dropdown"))).getOptions().stream().map(e -> e.getText()).collect(Collectors.toList())
.contains(option);
}
Вы можете использовать ее следующим образом.
String option = "Option 3";
if (optionExists(option))
{
new Select(driver.findElement(By.id("dropdown"))).selectByVisibleText(option);
}
Вы можете связать их вместе, если необходимо.Вы также можете использовать код в optionExists в методе, который устанавливает значение на основе предоставленного списка строк.Он может пройти по списку, проверить каждый из них, чтобы увидеть, существует ли он, а затем выбрать первый найденный ... или что-то в этом роде.Я оставлю это тебе ...