【问题标题】:Python selenium webdriver locate and click linksPython selenium webdriver 定位并点击链接
【发布时间】:2018-12-05 08:23:25
【问题描述】:

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

<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) 相同的错误

欢迎提出任何建议。

【问题讨论】:

    标签: python selenium-webdriver xpath css-selectors


    【解决方案1】:

    要单击文本为 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
      

    【讨论】:

    • 这和我的#2基本一样,不行。当你 click() 时,它总是使用 href= 属性中的 URL,这里是空的。
    • @Heinz 首先,在我的回答中,您的//a[contains(@onclick, "xyz123456")][contains(text(), "xlsp")]//a[contains(@onclick,'XP') and contains(.,'xlsp')] 之间存在很大差异。此外,我敢肯定你还没有考虑过我诱导的 WebDriverWait。让我知道执行状态。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多