Как класс Selenium ByChained действительно работает?

Я очень смущен тем, чтодокументация для класса ByChained упоминает. Это говорит:

Механизм, используемый для поиска элементов в документе с использованием ряда других поисков. Этот класс найдет все элементы DOM, которые соответствуют каждому из локаторов в последовательности, например, driver.findElements (new ByChained (by1, by2)) найдет все элементы, которые соответствуют by2, и появится под элементом, который соответствует by1.

Также естьвопрос для селена на code.google.com, создан для класса ByChained, где кто-то прокомментировал, сказав, что он предназначен для поиска элементов / элементов с использованием нескольких локаторов.

Я не понимаю Почему by1 и by2 должны быть локаторами двух разных элементов? Когда я впервые наткнулся на этот класс, я почувствовал, что он поможет найти элемент (ы) с помощью различных локаторов. Так что если один локатор не работает, следующий будет работать. Но когда я практически использовал этот класс, он вел себя очень странно и постоянно генерировал NoSuchElementException.

Например, если мой HTML это:

<html>
  <body>
    <div id="details">
      <input id="firstName" class="personName" type="text"/>
    </div>
  </body>
</html>

Я хочу найти поле ввода, используя два локатора в ByChained:
1. используяBy.id("firstName")
2. используяBy.className("personName")

Итак, мой код становится:

By myBy = new ByChained(By.id("firstName"),By.className("personName"));
driver.findElement(myBy);

При исполнении я получил NoSuchElementException. Я ожидал, что если мой первый By не сработает, он найдет элемент со следующим By в серии.

Может кто-нибудь объяснить, как этот класс работает с примером и в каких сценариях его можно использовать?

Ответы на вопрос(3)

Ваш ответ на вопрос