【问题标题】:Selenium adding items from a Web element list to a string array listSelenium 将 Web 元素列表中的项目添加到字符串数组列表
【发布时间】:2013-08-27 21:12:26
【问题描述】:

我正在做一些自动化测试,我正在尝试将一些项目从 web 元素列表保存到字符串数组,应该涉及一些解析,但我不确定如何,请参阅下面的代码 sn-p

public void I_should_see_the_following_folders(DataTable expectedData) throws Throwable {
    int tbl1; int tbl2;
    List<List<String>> featureTable = expectedData.raw();
    WebElement folders = driver.findElement(By.id("folders"));
    List <WebElement> emailFolders = folders.findElements(By.className("folder-name"));

    List<String> foo = new ArrayList<String>();
    for (List<String> featuresList : expectedData.raw())
        foo.add(featuresList.get(0));

        tbl1 = emailFolders.size();
        tbl2 = featureTable.size();

    List<String> webList = new ArrayList<String>();
    for(int i=0;i<tbl1;i++){
        webList.add(emailFolders.get(0));
    }



}

我要做的是获取一个数据表的项目列表,将其转换为字符串数组,然后从网页中获取一个项目列表并将其存储到一个字符串数组中,然后比较每个数组以确定是否元素存在,并且没有特定的顺序。

我想我可以使用数据表数组列表,但需要一些有关 Web 元素数组列表的帮助。

谢谢!!!

【问题讨论】:

  • 那么你想从 WebElement 得到什么信息?你想要text吗?其他一些属性?
  • 我试图获取文本,然后进行字符串比较。

标签: java arrays selenium-webdriver


【解决方案1】:

请尝试使用以下示例代码,相应地更改 xpath/data

List<WebElement> resultList = _driver.findElements(By.xpath("//img[contains(@src,'tab-close.png')]/preceding-sibling::span[@class='tab-name ng-binding']"));
        for (WebElement resultItem : resultList){
           String tabname=resultItem.getText();
           if(resultItem.getText().equalsIgnoreCase("Dashboard")){
           GlobalFunctions.clickOnButtonCustomised(false, _driver, By.xpath("//span[@class='tab-name ng-binding' and contains(text(),'"+tabname+"')]/following-sibling::img[contains(@src,'tab-close.png')]"), "");
            }
        }

【讨论】:

    【解决方案2】:

    改变这个:

    for (int i=0; i<tbl1; i++)
        webList.add(emailFolders.get(0));
    

    到这里:

    for (WebElement emailFolder : emailFolders)
        webList.add(emailFolder.getAttribute(XXX));
    

    然后,将XXX 替换为存储实际文件夹名称的属性名称。

    几个例子:

    • 对于&lt;tag&gt;&lt;class="folder-name" id="folder1"&gt;&lt;/tag&gt;,将XXX 替换为"id"
    • 对于&lt;tag&gt;&lt;class="folder-name" value="folder1"&gt;&lt;/tag&gt;,将XXX 替换为"value"
    • 对于&lt;tag&gt;&lt;class="folder-name"&gt;folder1&lt;/tag&gt;,将XXX 替换为"innerHTML"

    顺便说一句,您可以简单地使用getText(),而不是getAttribute("innerHTML")

    【讨论】:

      【解决方案3】:

      可能有一种更简单的方法可以将 WebElements 列表转换为 String[] 数组,但是这种通用方法有效 -

      //  iterate through all elements adding to array we are returning
      public static String[] listToStringArray(List<WebElement> inList) {
          String[] outArray = new String[inList.size()];  // instantiate Array
      
          for (int i = 0; i < inList.size(); i++) {
              outArray[i] = inList.get(i).getText();
              }
          }
          return outArray;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-02
        • 1970-01-01
        • 2023-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-08
        相关资源
        最近更新 更多