Использование нескольких критериев для поиска 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.