#html #python-3.x #selenium #svg
#HTML #python-3.x #селен #svg
Вопрос:
Я пытаюсь удалить событие в повестке дня Google. Но каждый раз, когда я получаю сообщение об ошибке, webdriver не может найти элемент. изображение элемента
Exception has occurred: TimeoutException
Message:
File "C:UserscuyveDesktopgitss-tasksgoogle_agenda_API.py", line 105, in delete_event
delete = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[4]/div/div/div[2]/span/div/div/div[1]/div/div/div[2]/div[2]/div/span/span/svg")))
Я пытался использовать разные селекторы, но это не сработало
, это мой код, который у меня есть для этого:
delete = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[4]/div/div/div[2]/span/div/div/div[1]/div/div/div[2]/div[2]/div/span/span/svg")))
delete.click()
Ответ №1:
Xpath не может найти svg
элементы при обычном подходе.
Вместо:
//svg
Вам нужно использовать:
//*[name()='svg']
Вы также должны стараться избегать жестко закодированных xpaths. Любое изменение в любой части страницы по вашему текущему пути (а это длинный путь) приведет к его разрыву.
Для вашего календаря Google вы можете использовать это:
//div[@data-tooltip='Delete event']//*[name()='svg']
Это соответствует одному уникальному идентификатору следующим образом:
Комментарии:
1. спасибо, что драйвер нашел элемент, но он не нажимает на него. Сообщения об ошибке нет, но просто ничего не происходит
2. @Arnz3 — попробуйте подождать webdriver, чтобы убедиться, что объект готов и доступен для просмотра, или попробуйте другой идентификатор 🙂 — Этому вопросу уже несколько недель, возможно, вы захотите задать новый вопрос, чтобы получить дополнительную поддержку
3. Я обнаружил проблему, просто selenium не будет щелкать элементы, если вы используете name() в идентификаторе, который я исправил с помощью //div[@data-tooltip=»Afspraak verwijderen»] //* [@class=»NMm5M»]