使用Xpath返回多个结果

本文关键字:结果 返回 Xpath 使用 | 更新日期: 2023-09-27 18:16:09

我希望如果有人可以帮助,我正试图使用xpath表达式来返回下面HTML片段中指示的按钮值。是否有可能在单个xpath中返回这两个值?

<div class="selectedFacetsContainer">    
 <div class="selected-facets-slide">
   <button class="facet-button btn-large selected ng-scope keyword-facet" ng-click="removeFacet(sf)" ng-repeat="sf in selectedFacetsList">Thank</button>
   <button class="facet-button btn-large selected ng-scope keyword-facet" ng-click="removeFacet(sf)" ng-repeat="sf in selectedFacetsList">You</button>
 </div>
</div>

谢谢

使用Xpath返回多个结果

这应该会给你你正在寻找的。

_driver.findElement(By.xpath("//div[@class='selected-facets-slide']"));

从您的评论来看,您似乎可以使用CSS选择器而不是XPath。如果是这样,这段代码应该可以工作。它得到WebElementList,然后你可以循环得到你想要的值。

List<WebElement> buttons = driver.findElements(By.cssSelector("button.facet-button.btn-large.selected.ng-scope.keyword-facet"));
for (WebElement button : buttons)
{
    System.out.println(button.getText().trim());
}

可以使用下面的代码使用一个Xpath获取这两个值。

List<WebElement> abc = driver.findElements(By.xpath("//button[@class='facet-button btn-large selected ng-scope keyword-facet']"));
System.out.print(abc.size());
Iterator<WebElement> itr = abc.iterator();
while (itr.hasNext())
{
    WebElement a = itr.next();
    System.out.println(a.getText());
}

实际上你必须使用findElements(),它返回WebElement s的List。一旦我们得到了WebElement的列表,我们就可以使用IteratorWebElement中获得所有的值。

是的,您可以使用单个xpath获得这两个元素。-

driver.findElements(By.cssSelector('.facet-button btn-large selected ng-scope keyword-facet'));

您也可以使用className -

获取它们
driver.findElements(By.className('facet-button btn-large selected ng-scope keyword-facet'));

但是为了从每一个中提取值,您需要为此编写一些额外的代码。

希望有所帮助