在Node.js的Selenium-Webdriver中如何用By.xpath()查找含特定子元素的<tr>?
搞定包含特定子元素的
<tr>定位问题 嘿,我明白你的困扰了——你之前写的XPath没生效,是因为逻辑搞反啦!你原来的表达式在找自身带datetime2类的<tr>,但实际我们要找的是包含带datetime2类的<td>子元素的<tr>,换个思路就解决了。
直接可用的正确XPath
用这个表达式就能精准匹配你需要的所有目标<tr>,自动排除空的那些:
// Node.js环境下selenium-webdriver的写法 By.xpath("//tr[td[@class='datetime2']]")
拆解一下这个表达式
//tr:先选中页面里所有的<tr>元素[td[@class='datetime2']]:这是过滤条件,意思是“只保留那些拥有一个class属性等于datetime2的<td>子元素的<tr>”- 空的
<tr>因为没有符合条件的子元素,会被自动排除,完美符合你的需求
- 空的
可选的精准限定(如果页面有多个表格)
如果你的页面里不止这一个表格,怕匹配到其他表格的元素,可以加上上下文限定,比如限定在目标表格的<tbody>里查找:
By.xpath("//table/tbody/tr[td[@class='datetime2']]")
这样就只会在指定表格的<tbody>范围内找符合条件的<tr>啦。
内容的提问来源于stack exchange,提问作者Carpe
相关产品推荐
相关产品推荐

