首页 文章

WatirWebdriver使用Xpath查找给定节点的子节点

提问于
浏览
0

我正在尝试使用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')

但是这条道路每次都不一定相同,这会破坏事物 .

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

1 回答

  • 1

    问题是内部XPath说要在文档中的任何地方搜索h1元素 . 要仅在当前节点的上下文中搜索,您需要以 . 开头告诉XPath:

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

相关问题