2015-10-05 163 views
0

我希望如果有人能够帮助,我正在尝试使用xpath表达式来返回下面的HTML片段中指示的按钮值。是否有可能在一个xpath中返回两个值?使用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> 

感谢

回答

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')); 

但为了从他们中的每一个值,你需要编写一些额外的代码。

希望它有帮助

+0

谢谢@Girish Sortur,非常感谢 –

+0

@AkifTahir你在找什么?你想从它们中提取值还是仅仅返回两个元素的xpath?或者它解决了你的问题? –

0

这应该给你你在找什么。

_driver.findElement(By.xpath("//div[@class='selected-facets-slide']")); 
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()返回WebElementList秒。一旦我们获得了WebElement的列表,我们可以使用Iterator来获得WebElement中的所有值。

0

从您的意见看,您似乎可以使用CSS选择器而不是XPath。如果是这样,这个代码应该工作。它得到ListWebElement,然后您可以循环以获取所需的值。

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