$ x () всегда возвращает ƒ () {} в консоли Chrome Developer Tools на странице gmail - PullRequest
1 голос
/ 16 апреля 2019

$x("//div") всегда возвращает ƒ () {} в консоли Chrome Developer Tools на странице gmail.

В этом отношении он возвращает пустую функцию для любого локатора.

Принимая во внимание, что тот же локатор $x("//div") на странице jira правильно возвращает массив всех элементов div.

Chrome 73.0.3683.103 MacOS 10.14.3 Mojave

Есть какие-нибудь подсказки?

Кстати, этот локатор используется только для тестирования, поскольку фактический локатор не работает из сценариев Selenium на основе Python 3.x, использующих chromedriver. Значит, переопределение $ x () также влияет на автоматизацию Selenium?

gmail divs jira divs

1 Ответ

3 голосов
/ 16 апреля 2019

$x(thePath, [startNode]) - это вспомогательная функция, охватывающая document.evaluate() - она ​​вызывает его как document.evaluate(thePath, startNode, null, XPathResult.ANY_TYPE, null), где startNode по умолчанию document.
Браузеры решили реализовать его только в консоли , так же, как они реализовали оболочки $() и $$() над document.querySelectorAll() - для убеждения разработчиков.

И похоже, что разработчики Gmail решили переопределить его :). Так что просто используйте функцию normal / base для выполнения поиска элементов xpath:

document.evaluate("//div", document, null, XPathResult.ANY_TYPE, null)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...