Selenium 使用JavaWebDriver存储、搜索和处理动态webtable行
有几种解决方案,但没有使用hashmap和enum 网站表元素简单tbody、tr、td。在下面的代码中,我在行列表中有webelements,或者在另一个列表中将行数据作为字符串Selenium 使用JavaWebDriver存储、搜索和处理动态webtable行,selenium,selenium-webdriver,collections,enums,hashmap,Selenium,Selenium Webdriver,Collections,Enums,Hashmap,有几种解决方案,但没有使用hashmap和enum 网站表元素简单tbody、tr、td。在下面的代码中,我在行列表中有webelements,或者在另一个列表中将行数据作为字符串 List<WebElement> rows = table.findElements(By.tagName("tr")); List<ArrayList<String>> rowsData = new ArrayList<ArrayList<String
List<WebElement> rows = table.findElements(By.tagName("tr"));
List<ArrayList<String>> rowsData = new ArrayList<ArrayList<String>>();
for(WebElement row:rows){
List<WebElement> rowElements = row.findElements(By.tagName("td"));
ArrayList<String> rowData = new ArrayList<String>();
for(WebElement column:rowElements){
rowData.add(column.getText().toString());
}
rowsData.add(rowData);
}
List rows=table.findElements(按.tagName(“tr”);
List rowsData=new ArrayList();
for(WebElement行:行){
List rowElements=row.findElements(按.tagName(“td”));
ArrayList rowData=新的ArrayList();
对于(WebElement列:rowElements){
添加(column.getText().toString());
}
rowsData.add(rowsData);
}
一行可以是:
12,ab,苹果,红色,-1000;
66,ac,葡萄,蓝色,1000;等等
我必须检查所有行,找到第一行是红色的,苹果色的,最后一行不大于0,然后单击
更有用的选项可以是enum和hashmap。Hashmap键可以是枚举值,如ID、名称、水果、颜色、数字。检查hashmap是否有颜色=红色、名称=苹果等
有什么解决办法吗?我认为它对每个人都非常有用
提前谢谢 您是否想过将行创建为对象?像这样的
public class Fruit {
private String name;
private int id;
//go horizontally with your column names;
//have getters/setters here
}
现在你的代码可以写得稍微不同,比如
List<WebElement> rows = table.findElements(By.tagName("tr"));
List<Fruit> fruits = new ArrayList<Fruit>();
for(WebElement row:rows){
List<WebElement> rowElements = row.findElements(By.tagName("td"));
Fruit fruit = new Fruit();
//you know first column is name or so on
//or store column header order and use it here
fruit.setName(rowElements.get(0).getText());
fruit.id(rowElements.get(1).getText());
fruits.add(fruit);
}
List rows=table.findElements(按.tagName(“tr”);
列表结果=新的ArrayList();
for(WebElement行:行){
List rowElements=row.findElements(按.tagName(“td”));
水果=新水果();
//你们知道第一列是名字之类的
//或者存储列标题顺序并在此处使用
setName(rowElements.get(0.getText());
id(rowElements.get(1.getText());
水果。添加(水果);
}
现在你可以迭代
水果了
对我来说很有意义,它是一些流、解析器等的解决方案。感谢nilesh的好主意!很高兴它对@brobeenilesh有所帮助,您为webtable实现了解析器吗?这个解决方案还可以,但是我有很多页面,我想把它们放到hashmap中,因为它更容易使用。谢谢在这种情况下,你必须开发一些通用的东西,并将其用作图书馆。是的,我知道,但缺乏经验。任何文章,样本代码将不胜感激。。