#python #selenium #selenium-chromedriver
#питон #селен #селен-хромовый преобразователь
Вопрос:
Итак, я кодирую этого бота, чтобы присоединиться к моим школьным классам, используя selenium, и я сталкиваюсь с этой проблемой, когда он переходит на страницу моих конференций и ожидает появления кнопки присоединиться и нажатия на нее. Сначала он не смог бы его найти, поэтому я поцарапал идею time и убедился, что при открытии страницы кнопка join будет там, поэтому я сделал это и даже поместил эту строку кода, чтобы убедиться join=WebDriverWait(driver,30).until(EC.presence_of_element_located((By.XPATH,"//span[contains(text(),'Join')]")))
тем не менее, он по-прежнему не может найти кнопку соединения, либо нажмите ее, даже если она видна на глаз, я свяжу источник страницы по ссылке, если вы можете просто сказать мне, как его найти, также я не могу использовать метод href, поскольку он не хранится так, он просто хранится такhttps://i.stack.imgur.com/ldxY7.png
так что я действительно в замешательстве, это почти как невидимый элемент, это забавно, потому что даже когда я получаю сообщение об ошибке, я использую элемент управления F для проверки элемента, чтобы проверить, правильно ли я использовал XPATH, и я всегда нахожу его, поэтому я не понимаю, почему selenium не может, пожалуйста, помогите, я думаю, что я просто что-то пропустил, япросто не знаю, что.
Комментарии:
1. Попробуйте использовать
element_to_be_clickable
вместоpresence_of_element_located
2. уже пробовал, это не работает, проблема в том, что он не может найти элемент, даже если он действительно существует
Ответ №1:
Проверьте наличие элемента, выполнив цикл и проверив presence_of_element_element_located несколько раз с добавлением задержки в 2/3 секунды между каждой последовательной проверкой. Аналогия с python selenium-
for i in range(5):
l= driver.find_element_by_css_selector("#js-gdpr")
time.sleep(5)
или
Выполните итерацию по всем элементам в родительском div и проверьте его, используя уникальный текст / цвет, и получите к нему доступ.
Комментарии:
1. Не могли бы вы добавить, как это сделать точно? Например, как OP может добавить задержку и проверять ее несколько раз?
2. попробовал оба варианта, которые не сработали, добавил time.sleep(10) между каждым разом, когда я думаю, что это возможно с помощью select frame, но я не уверен, как это сделать, но если я могу сказать программе переключиться на индекс кадра 1, это должно сработать знаете ли вы, как я могу написать, чем в коде (python)
Ответ №2:
Я думаю, вы пытаетесь автоматизировать Google meet. На этом веб-сайте кнопка «присоединиться сейчас» объявлена как динамический путь, поэтому вы можете использовать библиотеку pyautogui
impor pyautogui as pg
for i in range(5):
pg.press('tab')
time.sleep(2)
pg.press('enter')
Этот код поможет вам найти кнопку присоединиться сейчас и нажать на нее.
Комментарии:
1. сначала я тоже подумал об этом, но я не использую Google meet, а веб-сайт, который я использую, не поддерживает перемещение вкладок для перехода от одной кнопки к другой, так что это может сработать, но, к сожалению, не на этом сайте