Selenium 使用JavaWebDriver存储、搜索和处理动态webtable行

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

有几种解决方案,但没有使用hashmap和enum

网站表元素简单tbody、tr、td。在下面的代码中,我在行列表中有webelements,或者在另一个列表中将行数据作为字符串

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中,因为它更容易使用。谢谢在这种情况下,你必须开发一些通用的东西,并将其用作图书馆。是的,我知道,但缺乏经验。任何文章,样本代码将不胜感激。。