【问题标题】:How to access the second element that has the same class name in selenium如何访问硒中具有相同类名的第二个元素
【发布时间】:2014-07-12 05:35:33
【问题描述】:

我的网页上有 2 个元素具有相同的类名,我正在尝试访问第二个元素,但我无法做到这一点。我尝试了 [position=1] 并将 [1] 放在 xpath 表达式的末尾

driver.find_element_by_xpath("//div[@class='tableType value']")

上面返回以下2个元素

我试过了

driver.find_element_by_xpath("//div[@class='tableType value']")[1]
driver.find_element_by_xpath("//div[@class='tableType value'][position=1]")

有人可以帮我解决这个问题吗?

谢谢

【问题讨论】:

  • By.xpath() 正是我所需要的(我通过右键单击元素并选择“检查”在 Firefox 中复制了正确的值)。使用 Selenium WebDriver 的 JavaScript / Node.js 版本,看起来我们无法通过 By.css("TagName")[1] 选择具有搜索值的第二个标签名称。

标签: python selenium xpath


【解决方案1】:

使用

driver.find_element_by_xpath("(//div[@class='tableType value'])[2]")

driver.find_element_by_xpath("(//div[@class='tableType value'])[position()=2]")

XPath 从 1 开始计数,因此第二个元素位于 position()2

【讨论】:

  • 我都试过了,但仍然返回了两个元素。
  • 好的。您可能在不同的上下文中有许多嵌套的 div。您可能需要使用其他谓词来更好地过滤结果。显示您的代码(链接到它,并在此处添加相关部分)。我在上面添加了括号,它将仅选择 一个 元素,即整个文档中的第二个元素,但这可能不是您想要的。
【解决方案2】:

您好,请找到以下代码以单击具有相同类名的第二个元素。 [1] 表示要点击第二个,[2] 表示要点击第三个......

driver.find_elements_by_class_name('classname')[1].click()

【讨论】:

    猜你喜欢
    • 2019-11-26
    • 2022-01-04
    • 2022-10-31
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    • 2013-12-13
    相关资源
    最近更新 更多