【问题标题】:WatirWebdriver using Xpath to find children of a given nodeWatirWebdriver 使用 Xpath 查找给定节点的子节点
【发布时间】:2014-08-18 21:20:14
【问题描述】:

我正在尝试使用 WatirWebdriver 进行 2 阶段 xpath 选择,首先在容器中查找元素,然后从每个元素中查找特定信息:

# Select all elements of interest
browser.divs(xpath: '/html/body/ul/li[@class="thing"]').each do |pannel|
  # Select info from each element
  panel.element(xpath: '//h1[@class="thing_title"]/a')
end

问题是第二个 xpath 选择不搜索给定节点的子节点。 它搜索整个页面并选择第一个匹配项 - 因此您每次都会获得第一个匹配项的相同信息。 我发现一种解决方案是给它一个完整的路径,如下所示:

# Select info from each element
panel.element(xpath: 'div/div[2]/div[1]/div/h1/a')

但路径不一定每次都相同,这会破坏事情。

有没有办法只搜索给定节点的子节点,而不指定完整路径?

【问题讨论】:

    标签: ruby xpath webdriver watir


    【解决方案1】:

    问题在于内部 XPath 表示要在文档中的任何位置搜索 h1 元素。要仅在当前节点的上下文中搜索,您需要以 . 开头告诉 XPath:

    panel.element(xpath: './/h1[@class="thing_title"]/a')
    

    【讨论】:

    • 谢谢贾斯汀!我被 w3school 的文档误导了“// - 从 当前节点 中选择文档中与选择匹配的节点,无论它们在哪里”,但我猜它们的意思是像 /first_node/ 这样的查询/休息。
    猜你喜欢
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    • 2019-04-11
    相关资源
    最近更新 更多