Как автоматизировать веб-страницу под закрытым shadowDOM - PullRequest
0 голосов
/ 19 июня 2019

Часть веб-страницы находится в режиме закрытого теневого корня. Как мы можем автоматизировать это с помощью селена или JavaScript?

Edit: мы можем увидеть DOM под тенью в chrome: // inspect / # apps. Это, кажется, ребенок DOM. Возможно ли установить связь между родительским DOM и вышеприведенным дочерним DOM для выполнения действий с дочерним DOM, когда наша ShadowRoot DOM мешает нам автоматизировать?

1 Ответ

0 голосов
/ 19 июня 2019

Простой ответ: Вы не можете.

Более сложный ответ:

Переопределите функцию Element.prototype.attachShadow, чтобы переопределить настройку closed и установить значение open.

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

ОБНОВЛЕНИЕ

Закрытый компонент является попыткойпредоставить создателю компонента некоторый уровень безопасности, чтобы никто другой не мог испортить его компонент.Хотя инструменты разработчика по-прежнему могут видеть изнутри, внешний код не может видеть, если компонент каким-либо образом не выставляет shadowRoot.

Что должен делать закрытый компонент, вместо предоставления своего shadowRoot, чтобы обеспечитьдостаточно свойств и функций, чтобы пользователь компонента мог делать все, что ему нужно.

Подумайте об элементе <video> .У них есть десятки свойств между ним и его родительским элементом HTMLMediaElement и десятки функций и событий.Компонент имеет все необходимое для того, чтобы пользователи <video> могли делать практически все.

Если мы пишем наш компонент таким образом, то проблема с близостью не должна быть проблемой.

Иногдалюди хотят тестировать каждый аспект веб-компонента, но им следует сосредоточиться только на общедоступном интерфейсе и не беспокоиться о внутреннем DOM.

Как вы тестируете элемент <input>.Большую часть времени вы устанавливаете .value = "some value"; или добавляете прослушиватель событий на change или input.

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

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