Селен: очистка всех атрибутов элемента с помощью Javascript возвращает неверные результаты - PullRequest
0 голосов
/ 29 августа 2018

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

((JavascriptExecutor) driver).executeScript("var items = {}; for (index = 0; index < arguments[0].attributes.length; ++index) { items[arguments[0].attributes[index].name] = arguments[0].attributes[index].value}; return items;", element);

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

Показательный пример:

Если вы перейдете к http://google.com и определите поле поиска с помощью (.//input[contains (@role,'combobox')]) (или любого другого из многих XPath), а затем выполните указанный код JS, он вернет атрибут (.//input[contains (@class,'gsfi lst-d-f')]), который на самом деле не соответствует окно поиска. На самом деле, этот атрибут даже не присутствует на странице при использовании FireBug.

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

Почему JS возвращает этот текст и есть ли способ его обойти?

Спасибо

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