Детализация теневого DOM Chrome в селене с использованием хромедривера - PullRequest
2 голосов
/ 28 апреля 2020

Я новичок в селене.

Я пишу тест, в котором тест должен взаимодействовать с окном «Предварительный просмотр» браузера Chrome, который запускается при запуске команды печати. Чтобы тесты работали, мне нужно получить доступ к DOM окна «Предварительный просмотр». DOM содержит вложенную иерархию теневых элементов. Я могу получить доступ к элементам Shadow, но мой код выглядит ужасно. Я понимаю, что к теневым элементам нельзя получить прямой доступ, но нужно детализировать до ребенка, начиная с root. Есть ли эффективный и более чистый способ доступа к DOM?

Как пример -

enter image description here

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

Для это я написал это заявление с отлично работает -

driver.executeScript("document.querySelector('print-preview-app')
.shadowRoot.querySelector('print-preview-sidebar')
.shadowRoot.querySelector('print-preview-destination-settings')
.shadowRoot.querySelector('print-preview-settings-section').querySelector('print-preview-destination-select')
.shadowRoot.querySelector('select').options[1].text");

Ниже приведен скриншот кода окна «Предварительный просмотр» -

enter image description here

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...