我希望有人可以提供帮助,我正在尝试使用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>
谢谢
答案 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()
来返回List
个WebElement
个。获得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());
}