我正在尝试在Python中使用Selenium来单击网页上报告的链接。我可以将其打开到打开报告所在页面的位置,但是实际上无法单击该特定报告。
页面上有所有具有相同类别的报告的列表。例如,当我检查该特定报告时,这就是我得到的:
<a class="rpt" href="reportConfigRedirect.asp?action=filter&rc_id=181786&letter=">Run with new filters</a>
我尝试过:
driver.find_element_by_xpath("xpath")
这似乎不起作用,一旦到达带有报告的页面,它就什么也不做。
答案 0 :(得分:2)
得出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执行程序。
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)