Порядок поиска Selenium DOM

Я знаю, что этот вопрос может быть сложным, потребуется помощь/предложения. если дубликат / плохой, пожалуйста, дайте мне знать через комментарии, которые я удалю.

Я хотел бы понять, как Selenium выполняет поиск в древовидной структуре DOM.

(Причина, по которой я спросил, заключается в том, что я переключился с Testcomplete только что. Testcomplete выполняет поиск снизу вверх. Большинство нижних элементов ищутся быстрее. Кроме того, если есть 10 элементов с одинаковым идентификатором, и мы пытаемся найти элемент, а не найти все элементы, это даст самый нижний элемент)

Итак, Selenium — он начинается сверху или снизу ветки дерева? Давайте посмотрим, как выглядит дерево

<div>  
    <section1>
        <h1>
        </h1>
        <h2>
        </h2>
   </section1>
    <section2>
        <i1>
        </i1>
   </section2>
   <section3>
        <j1>
            <k1 id='something'>
            </k1>
        </j1>
        <j2>
        </j2>
   </section3>
</div>

Я ищу идентификатор элемента = что-то.

  1. Сначала он ищет тег Section 1, h1, а затем проходит вниз? или он начинается с тега Section 3 j2 и начинается вверх?. Причина в том, что на очень длинной странице AngularJs поиск таблицы вверху дает более быстрые результаты, а таблица внизу занимает почти 15 секунд.
  2. Во-вторых, он ищет как серийно? или Вертикально?.

    Серийно - Поиск Section1, h1, h2, section2, i1 и т.д.

    Вертикально — поиск Section1, section2, section3, а затем h1,h2,i1 и т. д.

Понимание этого будет иметь большое значение для разработки хорошей стратегии поиска элементов.


person Makjb lh    schedule 22.02.2016    source источник


Ответы (1)


если вы сделаете findElement в Selenium, он даст вам элемент, который первым появляется на странице в том же логическом порядке, что и findElement, если бы вы сделали это в JavaScript.

Очевидно, что есть несколько способов выполнить поиск, и точная реализация будет зависеть от реализации драйвера (FireFox, Google, IE и т. д.). Но я всегда получал то, что ожидал, а не что-то вроде дурацкого TC.

Мой ответ основан на моем собственном опыте использования продукта. Я не могу найти какой-либо точный авторитетный источник, который задокументировал бы это для вас.

person Dave Bush    schedule 22.02.2016
comment
Я бы не сказал, что ТС тупой. Просто реализация Javascript и TC будут перечислены в определенном порядке. И, кстати, они используют JScript — реализацию javascript от Microsoft. Во-вторых, я не могу понять, ответили ли вы за обход порядка тегов. это очень важно, я нахожу это, потому что, если есть вертикальный поиск, мы можем быстрее сузить его, используя xpath. Я пытаюсь это сделать - person Makjb lh; 22.02.2016
comment
По моему опыту, это в порядке списка HTML. Поиск в глубину. XPath, если вы можете это сделать, может быть быстрее на миллисекунды. Не то, о чем я бы беспокоился, кроме как указать, какой именно элемент вы ищете. - person Dave Bush; 22.02.2016
comment
Позвольте мне попытаться проверить это. Мне нужно, вероятно, создать собственный HTML для этого - person Makjb lh; 22.02.2016
comment
Любые подсказки - какую именно команду javascript Selenium использует для поиска? - person Makjb lh; 22.02.2016
comment
Как я уже сказал, это будет зависеть от реализации драйвера. - person Dave Bush; 22.02.2016