我想制作一个可以返回元素列表的通用方法。我有可能做到这一点吗? 我已经知道如何使用List来获取使用findElements的所有Web元素的列表。 我期待着制作一个可以用于我的框架的方法。 我正在使用带有TestNG的Java和Selenium Webdriver。
答案 0 :(得分:1)
java.util.List接口是java.util.Collection接口的子类型。它表示对象的有序列表,这意味着您可以按特定顺序访问List的元素,也可以通过索引访问。您还可以多次向List添加相同的元素。
此处List<WebElement>
表示包含WebElement作为数据类型的列表顺序
实施例: -
List<WebElement> mylist = driver.findElements(By.xpath("YOUR XPATH"));
在上面的例子中,您可以看到我使用findElements而不是findElement,这意味着我将存储多个预期由我的xpath返回的元素。
现在假设您想要点击所有这些元素,那么您可以执行以下操作
List<WebElement> mylist = Driver.findElements(By.xpath("YOUR XPATH"));
for(WebElement en: mylist)
{
en.click();
}
通过使用上面的代码,selenium会点击上面列表中的所有元素存储
在Selenium中,只要我们需要在单个对象中保存更多WebElemet,我们就会使用List。
我们可以使用下面的许多其他收集界面
Set<String> windowId = Driver.getWindowHandles(); // get window id of current windows
Iterator<String> itererator = windowId.iterator();
希望它会对你有所帮助:)。
如果仍然遇到任何问题,请回复我:)
答案 1 :(得分:0)
Selenium驱动程序已经实现了该方法:
java.util.List<WebElement> findElements(By by)
例如,此代码检索页面中的所有表行:
List<WebElement> tableRows = driver.findElements(new By.ByTagName("tr"));
答案 2 :(得分:0)
List<WebElement> yourList = driver.findElements(By.xpath("your_path"));
if(yourList != null || !yourList.isEmpty()){
System.out.println(yourList.size());
for (WebElement webElement : yourList) {
System.out.println(webElement.getAttribute("id"));
}
}else{
//empty list actions
}
您可以更改选择器和评估或任何您想要的for循环
答案 3 :(得分:0)
最好使用Selenium Page Factory
您的元素列表如下所示:
<div class="row" ng-repeat="cat in categories track by $index">
<div class="col s12">
<div class="col s4">
{{cat.cat}} - {{cat.translationTag}}
</div>
<div class="col s8">
<textarea ng-model="ngmodelfield.[cat.translationTag]" class="materialize-textarea"></textarea>
</div>
</div>
</div>