繁体   English   中英

Python Selenium Webdriver找到并单击链接

[英]Python selenium webdriver locate and click links

我在同一单元格中有一个包含四个链接的表列:

<td>
<a href="", onclick=showPricing('1234567','P', 'xyz123456', )>pdf,</a>
<a href="", onclick=showPricing('1234567','C', 'xyz123456', )>csv,</a>
<a href="", onclick=showPricing('1234567','X', 'xyz123456', )>xls,</a>
<a href="", onclick=showPricing('1234567','XP', 'xyz123456', )>xlsp</a>
</td>

我想单击第四个链接文本“ xlsp”,但不能。

我试过的

1) driver.find_element_by_xpath('//a[contains(@onclick, "xyz123456")]').click()

这当然会单击第一个:pdf

2) driver.find_element_by_xpath('//a[contains(@onclick, "xyz123456")][contains(text(), "xlsp")]').click()

这将选择第四个,但是出现错误“ ..errorElement无法滚动到视图中”

3) driver.find_elements_by_xpath('//a[contains(@onclick, "xyz123456")]')[3].click()

这将返回与2相同的错误)

任何建议表示赞赏。

要单击文本为xlsp的第四个链接,可以使用以下解决方案之一:

  • 使用CSS_SELECTOR

     WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "td a[onclick*='XP']"))).click() 
  • 使用XPATH

     WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[contains(@onclick,'XP') and contains(.,'xlsp')]"))).click() 
  • 注意 :您必须添加以下导入:

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

我测试了多个选项,包括@DebanjanB的建议,并认为这是最可靠的解决方案:

driver.execute_script(dr.find_element_by_xpath('//a[contains(@onclick, "xyz123456")][contains(@onclick, "XP")]').get_attribute("onclick"))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM