Selenium快速获取前台表格数据

在自动化测试中,需要验证表格数据的准确性。面对Dojo框架且部分字段转义的问题,原有的通过WebDriver逐行遍历的方式效率较低。本文提出两种解决方案:1) 利用dojo.query()快速获取数据;2) 继续使用WebDriver方法,但其耗时较长。作者分享了在Selenium自动化测试中的实践经验,期待同行交流。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在做自动化测试的时候,避免不了校验表格中的数据是否正确,而获取数据又成了一个难题,待测项目前台使用的是Dojo,且个别字段经过转义,无法通用Store直接获取。最开始用的是方法是通过使用WebDriver中的findElements得到行,遍历列,这样做比较慢,想了好长时间终于找到了。代码如下,如果你正在做Selenium自动化测试的开发,大家可以交流一下。

 

方法1:采用dojo.query()方法来取得前台Grid中的数据。优点:速度快

 

String jscode=
" var rownum = dijit.byId(\"" + this.id + "\").getRowManager().getRowCount(); " + //获取当前grid行数
" var headers = dojo.query(\"#"+this.id+" table[class='u-grid-master-header'] " +
		"th[class~='u-grid-hcell'][colSpan='1']\"); " + //获取当前grid列数(无合并列)
" var colnum = headers.length; "+
" var rowdata = []; " +// 行数据
" var cell; " +
" for(var i=0;i<rownum;i++)" +
" {" +
"   var celldata = []; " +// 单元格数据 
"   for(var j=0;j<colnum;j++)" +
    "{" +
    " column = dojo.query(\"#" + this.id + " table[class='u-grid-master-views'] " +
    		"div[class~='u-grid-row'][gridRowIndex='\"+i+\"'] " +
    		"td[class*='u-grid-cell'][idx='\"+j+\"']\"); "+
    " celldata.push(column[0].innerText.replace(/(^\\s*)|(\\s*$)/g, '')); " +//去掉左右两边空格
    "}"+
    " rowdata.push(celldata); " +
" }"+              
"return rowdata;";
List<List<String>> list = (List<List<String>>)((JavascriptExecutor) getDriver()).executeScript(jscode);
 

方法2:使用WebDriver方法。缺点:耗时

 

List<List<String>> list = new ArrayList<List<String>>();
List<String> rowData = null;
List<WebElement> elements1 = null;
List<WebElement> elements2 = null;
for (Integer i = 0, j = this.getRowCount(); i < j; i++)
{
    rowData = new ArrayList<String>();
    elements1 = getDriver().findElements(
            By.xpath("//div[@id='" + this.id + "']//div[contains(@class,'u-grid-row')][@gridRowIndex='" + i
                    + "']"));
    for (WebElement e1 : elements1)
    {
        elements2 = e1.findElements(By.className("u-grid-cell"));
        for (WebElement e2 : elements2)
        {
            rowData.add(e2.getText());
        }
    }
    list.add(rowData);
}
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值