NodeJS+Selenium中如何对返回元素进行二次XPATH解析?
解决Selenium中基于父元素的XPATH查询重复结果问题
问题出在你使用的XPATH路径上:当你通过elements[i].findElement调用时,用//time[contains(@class, 'time-class')]会从整个文档根节点开始查找,而不是从当前的li元素下搜索,所以每次都会返回页面中第一个匹配的time元素,导致输出重复。
只需要把XPATH改成相对路径,在开头加上.即可,.表示从当前上下文节点(也就是当前循环的li元素)开始查找:
修改后的代码片段:
for (let i = 0; i < elements.length; i++) { // 关键修改:XPATH开头添加. let timeContainer = await elements[i].findElement(By.xpath(".//time[contains(@class, 'time-class')]")).getAttribute("datetime"); let innerHTML = await elements[i].getAttribute("innerHTML"); console.log(timeContainer); }
这样修改后,每次查询都会限制在当前li元素的范围内,就能正确获取每个li对应的time元素的datetime属性值了。
内容的提问来源于stack exchange,提问作者dojo
相关产品推荐
相关产品推荐

