我正在尝试使用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')
但每次的路径不一定相同,这会破坏事物。
是否可以仅搜索给定节点的子节点,而无需指定完整路径?
答案 0 :(得分:1)
问题是内部XPath说要在文档中的任何地方搜索h1元素。要仅在当前节点的上下文中进行搜索,您需要以.
开头告诉XPath:
panel.element(xpath: './/h1[@class="thing_title"]/a')