Py学习  »  Python

python selenium webdriver定位并单击链接

Heinz • 5 年前 • 1602 次点击  

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

<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社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43314
 
1602 次点击  
文章 [ 2 ]  |  最新文章 5 年前
Heinz
Reply   •   1 楼
Heinz    6 年前

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

driver.execute_script(dr.find_element_by_xpath('//a[contains(@onclick, "xyz123456")][contains(@onclick, "XP")]').get_attribute("onclick"))
DebanjanB
Reply   •   2 楼
DebanjanB    6 年前

单击第四个链接,文本为 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