如何单击第三个href链接?

时间:2018-12-05 00:04:59

标签: python-3.x selenium xpath css-selectors

<ul id='pairSublinksLevel1' class='arial_14 bold newBigTabs'>...<ul>
<ul id='pairSublinksLevel2' class='arial_12 newBigTabs'>
   <li>...</li>
   <li>...</li>
   <li>
      <a href='/equities/...'> last data </a>  #<-- HERE
   </li>
   <li>...</li>

问题是我如何获得第三个li标签?

在我的代码中

xpath = "//ul[@id='pairSublinksLevel2']"
element = driver.find_element_by_xpath(xpath)
actions = element.find_element_by_css_selector('a').click()

代码部分起作用。但我想点击第三个li标签。 该代码不断单击第二个标签。

2 个答案:

答案 0 :(得分:1)

尝试

driver.find_element_by_xpath("//ul[@id='pairSublinksLevel2']/li[3]/a").click()

编辑: 感谢@DebanjanB的建议:

当您获得带有xpath //ul[@id='pairSublinksLevel2']的元素并在其子元素中搜索a标记时,它将返回第一个匹配项(在您的情况下,它可能位于第二个{{1}之内} 标签)。因此,您可以使用上面给出的索引来获取特定的编号匹配项。请注意,这种索引从1而不是0开始。

答案 1 :(得分:0)

根据您共享的 HTML ,您可以使用以下任一解决方案:

  • 使用link_text

    driver.find_element_by_link_text("last data").click()
    
  • 使用partial_link_text

    driver.find_element_by_partial_link_text("last data").click()
    
  • 使用css_selector

    driver.find_element_by_css_selector("ul.newBigTabs#pairSublinksLevel2 a[href*='equities']").click()
    
  • 使用xpath

    driver.find_element_by_xpath("//ul[@class='arial_12 newBigTabs' and @id='pairSublinksLevel2']//a[contains(@href,'equities') and contains(.,'last data')]").click()
    

参考:Official locator strategies for the webdriver