Как найти элемент по xpath в Selenium Python? - PullRequest
0 голосов
/ 03 июня 2019

Я пытаюсь использовать Selenium в Python, чтобы щелкнуть ссылку на отчет на веб-странице. У меня он работает до того момента, когда он открывает страницу, на которой находится отчет, но у меня возникают проблемы при нажатии на этот конкретный отчет.

На странице представлен список отчетов одного класса. Вот что я получаю, когда проверяю этот конкретный отчет, например:

<a class="rpt" href="reportConfigRedirect.asp?action=filter&amp;rc_id=181786&amp;letter=">Run with new filters</a>

Я пробовал:

driver.find_element_by_xpath("xpath")

и это, похоже, не работает, ничего не делает, когда попадает на страницу с отчетом.

1 Ответ

2 голосов
/ 03 июня 2019

Induce WebdriverWait и element_to_be_clickable. Используйте следующий Xpath.

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


element=WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//a[@class='rpt'][contains(.,'Run with new filters')]")))
element.click()

Если не удается щелкнуть с помощью Webdriver, попробуйте использовать javascript executor.

element=WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//a[@class='rpt'][contains(.,'Run with new filters')]")))
driver.execute_script("arguments[0].click();",element)

ИЗД.


element=WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//a[contains(.,'Run with new filters')]")))
driver.execute_script("arguments[0].click();",element)

ИЛИ

element=WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//a[contains(@hef,'reportConfigRedirect.asp?action=filter')][contains(.,'Run with new filters')]")))
driver.execute_script("arguments[0].click();",element)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...