Python Selenium: невозможно найти элемент по Xpath - PullRequest
0 голосов
/ 27 мая 2019

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

это HTML-часть сайта

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

driver = webdriver.Chrome()
driver.get("xxx")

WebDriverWait(driver,10).until(EC.presence_of_element_located(driver.find_element_by_id("DivFlashViewerMain_SavePdfButtonIcon")))
driver.find_element_by_xpath('//*[@id="DivFlashViewerMain_SavePdfButtonIcon"]').click()

Это ошибка, которую я получаю:

NoSuchElementException: такого элемента нет: невозможно найти элемент: { "Метод": "Идентификатор", "селектор": "DivFlashViewerMain_SavePdfButtonIcon"}
(Информация о сеансе: chrome = 74.0.3729.169) (Информация о драйвере: chromedriver = 74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-ссылки / отраслевые головки / 3729 @ {# 29}), платформа = Windows, NT 10.0.17763 x86_64)

Ответы [ 2 ]

1 голос
/ 27 мая 2019
driver.find_elements_by_css_selector('[id="DivFlashViewerMain_SavePdfButtonIcon"]')[0].click()

Похоже, вы используете много функций, например, для определения местоположения id = "".Настоятельно рекомендуем попробовать css-селекторы: Как использовать querySelectorAll только для элементов, у которых установлен определенный атрибут?

1 голос
/ 27 мая 2019

Вы должны использовать element_to_be_clickable, а не просто presence_of_element_located.

Это должно выглядеть примерно так:

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

driver = webdriver.Chrome()
driver.get("xxx")

button = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.ID, "DivFlashViewerMain_SavePdfButtonIcon")))
button.click()

Надеюсь, это поможет!

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