我怎么能得到的元素或数据的列表是在同一级别具有相同的属性



我有一个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的数据

我尝试用[Node Number]使用xpath,但是我发现所有的节点都在[1]级别。

是否有办法获得所有的数据或列表的元素test1到test2与"-"?

我以前见过这种问题。

这里必须使用following-sibling

  • 首先使用这种xpath:

    //div[文本()= ' test1 ']/. .//祖辈:div [@class ="pqr"而不是(包含(文本()、"测试")))

  • 那么你需要更改脚本。"注:我用JAVA写过代码"

    逻辑:

    while(element found text = '-'){//在这里获取数据}

请尝试这种方法。

您需要以下xpath:

(//div[@class='pqr'])[position()<=4]

注意position()谓词前的括号()

xpath tester的输出:

Element='<div class="pqr">test1</div>'
Element='<div class="pqr">-</div>'
Element='<div class="pqr">-</div>'
Element='<div class="pqr">test2</div>'

我认为您不能使用Test1和Test2元素作为标识符,因为它们与您想要收集的节点在同一行。否则,我认为您可以使用findElements(by.Xpath(" pater_to_search "))。这将返回与模式匹配的元素集合。

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

最新更新