我想在java中的Selenium中创建一个方法,它可以返回List <webelement>我该怎么做?

时间:2015-09-15 12:45:00

标签: java list selenium selenium-webdriver testng

我想制作一个可以返回元素列表的通用方法。我有可能做到这一点吗? 我已经知道如何使用List来获取使用findElements的所有Web元素的列表。 我期待着制作一个可以用于我的框架的方法。 我正在使用带有TestNG的Java和Selenium Webdriver。

4 个答案:

答案 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"));

以下是API文档http://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/WebDriver.html#findElements-org.openqa.selenium.By-

答案 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>