Xpath недействителен в автоматическом браузере Selenium - PullRequest
0 голосов
/ 07 марта 2019

Я пытаюсь автоматизировать некоторые взаимодействия с веб-сайтом.Я использую Chropath, чтобы найти абсолютные значения xpath различных элементов, а затем взаимодействую с ними в селене.Однако есть одна кнопка, на которую селен отвечает "Message: устаревшая ссылка на элемент: элемент не прикреплен к документу страницы".Если я открою новый браузер Chrome и перейду к этой кнопке, Chropath покажет мне действительный xpath.Однако, если я проверяю тот же элемент в браузере, который открывает селен, chropath читает: «Это может быть дочерний элемент svg / pseudo / comment / iframe от другого источника. XPath не поддерживает их».для относительного xpath и «Это может быть дочерний элемент iframe от другого src, и в настоящее время он не поддерживается».В обычном браузере Chrome абсолютный xpath равен

/html[1]/body[1]/form[1]/span[1]/table[1]/tbody[1]/tr[2]/td[1]/table[1]/tbody[1]/tr[1]/td[1]/table[1]/tbody[1]/tr[1]/td[1]/div[2]/div[1]/table[1]/tbody[1]/tr[2]/td[1]/div[1]/div[1]/table[1]/tbody[1]/tr[1]/td[3]/table[1]/tbody[1]/tr[1]/td[1]/input[1]

, а относительный xpath равен

//input[@value='View Report']

Кто-нибудь знает, почему существует эта разница?Я также попробовал тот же процесс, используя селектор CSS, и он дал те же результаты.

Ответы [ 2 ]

1 голос
/ 22 апреля 2019

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

0 голосов
/ 08 марта 2019

Я смог заставить это работать, подождав несколько секунд, пока все завершит загрузку, прежде чем искать элемент. Я сделал это с помощью оператора time.sleep (), но я думаю, что цикл также может работать достаточно хорошо и может быть более точным.

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