Selenium не может найти элемент после смены рабочего стола - PullRequest
0 голосов
/ 24 апреля 2020

Итак, у меня есть эта часть кода:

 buttons = browser.driver.find_element_by_id('buttons')
 camera_icon = buttons.find_element_by_class_name('style-scope yt-icon-button')
 camera_icon.click() 

Я пытаюсь нажать кнопку загрузки на YouTube, она прекрасно работает, когда я остаюсь на рабочем столе браузера (в полноэкранном режиме). Если я запускаю программу и оставляю веб-драйвер работать в фоновом режиме, а я перехожу на другой рабочий стол, по какой-то причине он не может найти «style-scope yt-icon-button».

Любая помощь / советы по этому вопросу высоко ценится!

1 Ответ

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

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

element = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".style-scope.yt-icon-button")) 
element.click() 

Импортируйте ниже пакет для этого

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

Более того, кажется, проблема с вашим локатором. Есть 2 класса style-scope и yt-icon-button. насколько я знаю, селектор классов find_element_by_class_name не поддерживает составные классы.

camera_icon = buttons.find_element_by_class_name('style-scope yt-icon-button')

должно быть

camera_icon = buttons.find_element_by_css_selector('.style-scope.yt-icon-button')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...