如何获得具有相同属性的同一级别的元素或数据列表?

时间:2015-05-20 08:46:39

标签: html selenium xpath text selenium-webdriver

我有一个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?

4 个答案:

答案 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()

{p}输出xpath tester

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());
   }