使用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>
谢谢
这应该会给你你正在寻找的。
_driver.findElement(By.xpath("//div[@class='selected-facets-slide']"));
从您的评论来看,您似乎可以使用CSS选择器而不是XPath。如果是这样,这段代码应该可以工作。它得到WebElement
的List
,然后你可以循环得到你想要的值。
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
的列表,我们就可以使用Iterator
从WebElement
中获得所有的值。
是的,您可以使用单个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'));
但是为了从每一个中提取值,您需要为此编写一些额外的代码。
希望有所帮助