我有一个Web应用程序,它有一个HTML页面。
在这个页面结构中是这样的:
<div class = 'abc'>
<div class = 'pqr'>test1</div>
</div>
<div class = 'abc'>
<div class = 'pqr'>-</div>
</div>
<div class = 'abc'>
<div class = 'pqr'>-</div>
</div>
<div class = 'abc'>
<div class = 'pqr'>test2</div>
</div>
<div class = 'abc'>
<div class = 'pqr'>-</div>
</div>
这里我想从test1获取数据到test2。
我尝试了[节点号]的xpath但是我找到了[1]级的所有节点。
有没有办法用“ - ”获取所有数据或元素列表test1到test2?
答案 0 :(得分:2)
我以前见过这种问题。
你必须在这里使用以下兄弟。
首先我使用这种类型的xpath:
// div [text()='test1'] /..// follow-sibling :: div [@ class ='pqr'而不是(contains(text(),'test')) ] 强>
然后你需要改变脚本。 “注意:我在JAVA中编写了代码”
逻辑:
while(找到元素text =' - ') { //在这里获取数据 } 强>
请尝试这种方法。
答案 1 :(得分:2)
我猜你想要以下xpath:
(//div[@class='pqr'])[position()<=4]
请注意()
谓词之前的括号position()
。
Element='<div class="pqr">test1</div>'
Element='<div class="pqr">-</div>'
Element='<div class="pqr">-</div>'
Element='<div class="pqr">test2</div>'
答案 2 :(得分:-1)
我认为您不能将Test1和Test2元素用作标识符,因为它们与您要收集的节点位于同一行。否则,我认为你可以使用findElements(by.Xpath(&#34; patern_to_search&#34;))。这将返回一组与您的模式匹配的元素。
答案 3 :(得分:-1)
不使用xpath的另一种方法:
List<WebElement> element = driver.findElements(By.className("pqr"));
for(int i=0;i<element.size()-1;i++){
System.out.println(element.get(i).getText());
}