使用Xpath返回多个结果

时间:2015-10-05 14:40:58

标签: c# selenium xpath selenium-webdriver webdriver

我希望有人可以提供帮助,我正在尝试使用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>

谢谢

4 个答案:

答案 0 :(得分:0)

是的,您可以使用单个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'));

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

希望有所帮助

答案 1 :(得分:0)

这可以为您提供所需的信息。

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

答案 2 :(得分:0)

您可以使用以下代码使用一个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()来返回ListWebElement个。获得WebElement个列表后,我们可以使用Iterator获取WebElement中的所有值。

答案 3 :(得分:0)

从您的评论中,您似乎可以使用CSS选择器而不是XPath。如果是这样,这段代码应该可行。它得到List WebElement,然后您可以循环获取所需的值。

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