java Selenium将Web元素列表中的项添加到字符串数组列表中

cclgggtu  于 2023-04-28  发布在  Java
关注(0)|答案(3)|浏览(163)

我正在做一些自动化测试,我试图保存一些项目从一个网页元素列表到一个字符串数组,应该有一些解析参与,但我不知道如何,见下面的代码片段

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));
    }


}

我尝试做的是获取一个数据表的项目列表,将其转换成字符串数组,然后从网页中获取一个项目列表,并将其存储到字符串数组中,然后比较每个数组以确定元素是否存在,并且是否相同,顺序不特定。
我想我得到了数据表数组列表的工作,但需要一些帮助与网页元素数组列表。
谢谢!!!

inb24sb2

inb24sb21#

请尝试使用以下示例代码,相应地更改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')]"), "");
            }
        }
9gm1akwq

9gm1akwq2#

更改此:

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

对此:

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

然后,将XXX替换为存储实际文件夹名称的属性的名称。
举几个例子:

  • 对于<tag><class="folder-name" id="folder1"></tag>,将XXX替换为"id"
  • 对于<tag><class="folder-name" value="folder1"></tag>,将XXX替换为"value"
  • 对于<tag><class="folder-name">folder1</tag>,将XXX替换为"innerHTML"

顺便说一句,你可以简单地使用getText()来代替getAttribute("innerHTML")

mi7gmzs6

mi7gmzs63#

可能有一种更简单的方法将WebElements的List转换为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;
}

相关问题