Селен не может найти элемент, даже если он существует - PullRequest
0 голосов
/ 12 апреля 2020

Это строка кода, которую я использую, чтобы найти элемент с помощью chrome веб-драйвера и python

Эта ошибка выдается каждый раз, когда я пытаюсь запустить код

Это кнопки на панели заголовка, и я пытаюсь, чтобы мой код нажал кнопку html

Это код html для кнопки усилий, которую я пытаюсь нацелить, используя селен, чтобы он мог нажать здесь, но он всегда говорит, что такой элемент не найден

У меня есть даже создал отдельную функцию, чтобы снова и снова находить элемент и спать в течение 5 се c после каждой успешной попытки, пока он не нажал на элемент, но все же не повезло, что он работает вечно, не найдя элемент

Здесь я вызываю функцию, описанную на 5-м рисунке. Здесь драйвер - это chromedriver, и он продолжает повторяться 10 раз с интервалом 5 се c, но все еще не повезло, и я постоянно наблюдаю за окном chrome, где драйвер выполняет всю работу и страница загружается, но даже после загрузки он все еще не работает.

Это начало всего html кода из проверяющего элемента в случае, если кто-то нужен

Это оставшийся HTML код с выбранной областью EFFORTS в случае необходимости

Я даже пытался использовать тень root, но это также не работает, и я также не уверен, что это случай тени root поскольку я не видел тени root, указанной в html, когда я проверял код html.

Ответы [ 2 ]

1 голос
/ 13 апреля 2020

Элемент, который вы пытаетесь найти, находится под iframe с классом iframeStyle. Сначала переключитесь на этот iframe для доступа к ссылке Усилия.

enter image description here

0 голосов
/ 12 апреля 2020

попробуйте ниже xpath, используя xpath includes, чтобы решить вашу проблему:

 WebDriverWait(driver, 30).until(
                EC.element_to_be_clickable((By.XPATH, "//a[contains(text(), 'EFFORTS')]")))

или

WebDriverWait(driver, 30).until(
            EC.element_to_be_clickable((By.ID, "tmsMobileId")))

Примечание: добавьте ниже импорта в ваше решение

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait

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

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