我正在使用
selenium-webdriver
处理“表格样式”网站。
表格嵌套很多,并且没有
id
或 name
属性。
所以我决定在表格中获取标题文本来找到这样的数据位置。
driver = Selenimum::WebDriver.for :firefox
element = driver.find_element(:xpath,
"//font[@color='#FFFFFF' and text()='some probably unique text']")
来自这样的 HTML。
<table><tbody>
...
<table><tbody><tr><td><font color="#FFFFFF">
some probably unique text
</font></td></tr></table>
...
</tbody></table>
我想从上面代码中获得的
table
元素中获取内部 font
元素。
我知道我可以接受element.find_element(:xpath, "../../../..")
,但这有点恶心。
我想至少像这样指定一个标签名称
element.find_element(:xpath, "../*/table")
。
有办法做到这一点吗?
您可以使用 XPath 轴
ancestor
。
element = driver.find_element(:xpath, ".//font[@color='#FFFFFF' and text()='some probably unique text']/ancestor::table")
或嵌套 XPath:不适用于像您这样的嵌套表情况
element = driver.find_element(:xpath, ".//table[.//font[@color='#FFFFFF' and text()='some probably unique text']]")
如果您使用 Capybara,节点有一个方法
ancestor
接受 CSS 选择器(类似于 JavaScript 的 closest
)。
例如:
table = find("font[color=FFFFFF]", text: "some probably unique text").ancestor("table")
within table do
click_on "stuff"
end