我正在进行一些自动化测试,我正在尝试将一些项目从Web元素列表保存到字符串数组中,应该有一些解析但我不确定如何,请参阅下面的代码片段
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元素数组列表的帮助。
感谢!!!
答案 0 :(得分:0)
请尝试使用以下示例代码,相应地更改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')]"), "");
}
}
答案 1 :(得分:0)
改变这个:
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"
BTW,而不是getAttribute("innerHTML")
,您只需使用getText()
。
答案 2 :(得分:0)
可能有一种更简单的方法将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;
}