Использование нескольких критериев для поиска WebElement в Selenium
Я использую селен для тестирования веб-сайта, работает ли это, если я нахожу и элемент по нескольким критериям? например :
driverChrome.findElements(By.tagName("input").id("id_Start"));
или
driverChrome.findElements(By.tagName("input").id("id_Start").className("blabla"));
3 ответов
нет это не так. Вы не можете объединить / добавить такие селекторы. Это в любом случае недействительно. Однако вы можете написать селекторы таким образом, чтобы охватить все сценарии и использовать это с findElements()
By byXpath = By.xpath("//input[(@id='id_Start') and (@class = 'blabla')]")
List<WebElement> elements = driver.findElements(byXpath);
это должно вернуть вам список элементов с input
теги, имя класс blabla
или id
id_Start
селекторы CSS были бы идеальными в этом сценарии.
ваш пример
By.css("input#id_start.blabla")
есть много информации, если вы ищете селекторы CSS. Кроме того, при работе с классами CSS проще, чем XPath, потому что Xpath рассматривает класс как литеральную строку, где AS CSS рассматривает его как коллекцию с разделителями пространства
чтобы объединить операторы, используйте ByChained:
driverChrome.findElements(
new ByChained(
By.tagName("input"),
By.id("id_Start"),
By.className("blabla")
)
)
однако, если критерии относятся к одному и тому же элементу, см. ответ @Saifur.