0

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

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

任何建议表示赞赏。

4

2 回答 2

0

要单击文本为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
    
于 2018-12-03T21:48:54.173 回答
0

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

driver.execute_script(dr.find_element_by_xpath('//a[contains(@onclick, "xyz123456")][contains(@onclick, "XP")]').get_attribute("onclick"))
于 2018-12-05T00:23:25.100 回答