Selenium快速获取前台表格数据

在做自动化测试的时候,避免不了校验表格中的数据是否正确,而获取数据又成了一个难题,待测项目前台使用的是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> list = (List>)((JavascriptExecutor) getDriver()).executeScript(jscode);
 

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

 

List> list = new ArrayList>();
List rowData = null;
List elements1 = null;
List elements2 = null;
for (Integer i = 0, j = this.getRowCount(); i < j; i++)
{
    rowData = new ArrayList();
    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);
}
 

 

 

你可能感兴趣的:(Selenium)