【问题标题】:get the second element from a list of elements with selenium in python从python中带有硒的元素列表中获取第二个元素
【发布时间】:2018-01-06 18:18:25
【问题描述】:

我想获取一个元素的内部 html(使用 get_attribute('innerHTML')),但它没有 id 或类,并且有多个元素具有相同的标签名称

test1=driver.find_elements_by_tag_name("td")

这会获取具有相同标签名称的元素的整个列表,但这不起作用,因为 get_attribute 不适用于多个元素

test2=driver.find_element_by_tag_name("td")

这可行,但获得了第一个 td 元素,但我想要第二个 td 元素

我该如何正确地做到这一点?

【问题讨论】:

  • 我最终比我想象的要容易得多,如果有人有同样的问题,请使用这个 >name=driver.find_elements_by_tag_name("td")[1].get_attribute('innerHTML')

标签: python selenium


【解决方案1】:

您可以使用下面的 xpath 来获取表格中每一行的第二个 td。

driver.find_elements_by_xpath("//table/tr/td[2]")

如果您需要特定表中的 xpath,请修改 xpath 以转到所需的表。

【讨论】:

    【解决方案2】:

    根据您的问题,以下代码行将返回您的第一个 td 元素:

    test2=driver.find_element_by_tag_name("td")
    

    要检索第二个 td 元素中的文本,您可以使用以下任一代码行:

    • xpath

      test2 = driver.find_element_by_xpath("//table//tr//following::td[2]").get_attribute("innerHTML")
      
    • css_selector

      test2 = driver.find_element_by_css_selector("//table > tr > td:nth-last-child(2)").get_attribute("innerHTML")
      

    注意xpathcss_selector的最后部分肯定会识别第二个<td>元素,但你可能需要根据您的HTML DOM调整初始部分

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-23
      • 1970-01-01
      • 2011-02-17
      • 1970-01-01
      • 2017-02-11
      • 1970-01-01
      • 2020-07-31
      • 1970-01-01
      相关资源
      最近更新 更多