【问题标题】:How to select parent of parent component by xpath如何通过xpath选择父组件的父级
【发布时间】:2014-09-13 07:49:15
【问题描述】:

有没有办法到达父母的父母的父母? :) 不要这样:

driver.find_element_by_xpath("//*[contains(text(), 'folder name')]").find_element_by_xpath('..').find_element_by_xpath('..').find_element_by_xpath('..').find_element_by_xpath('//tr[2]/td[2]/div')

所以我首先需要找到我的文件夹名称,而不是去找父母,然后才找到我的元素。这是我能做到的唯一方法。因为所有文件夹都有相同的元素。

【问题讨论】:

    标签: python selenium xpath


    【解决方案1】:

    您可以将其表示为单个 xpath:

    driver.find_element_by_xpath(
        "//*[contains(text(), 'folder name')]/../../..//tr[2]/td[2]/div"
    )
    

    【讨论】:

    • 它对我不起作用。 NoSuchElementException: Message: u'Unable to locate element: {"method":"xpath","selector":"//*[contains(text(), \'test folder\')]/../../ ..//tr[2]/td[2]/div"}' ;
    • @Michael,你能告诉我你正在处理的 html/url 吗?
    • 但它是这样工作的:driver.find_element_by_xpath("//*[contains(text(), 'folder name')]").find_element_by_xpath("//../../. .//tr[2]/td[2]/div")
    • OK.. 我得到了我需要的路径。 //*[contains(text(), 'test folder')]/../../../../td[2]/div
    • 你在 tr[2] 之前多了一个斜线。这可能是一个错误。无论如何,非常感谢!
    【解决方案2】:

    您可以使用ancestor xpath 函数使您的表达式更短。以http://www.w3schools.com/xpath/xpath_axes.asp 为例。对于您的情况,它看起来像//*[contains(text(), 'folder name')]/ancestor::/div(它可能需要更正,因为问题中没有提供确切的 HTML sn-p)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-11
      • 2017-04-13
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      相关资源
      最近更新 更多