如何在Selenium Python中通过xpath查找元素?

时间:2019-06-03 18:20:17

标签: python selenium

我正在尝试在Python中使用Selenium来单击网页上报告的链接。我可以将其打开到打开报告所在页面的位置,但是实际上无法单击该特定报告。

页面上有所有具有相同类别的报告的列表。例如,当我检查该特定报告时,这就是我得到的:

<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 个答案:

答案 0 :(得分:2)

得出WebdriverWaitelement_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执行程序。

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)

OR

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)