我正在尝试使用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 回答
问题是内部XPath说要在文档中的任何地方搜索h1元素 . 要仅在当前节点的上下文中搜索,您需要以
.
开头告诉XPath: