在做自动化测试的时候,避免不了校验表格中的数据是否正确,而获取数据又成了一个难题,待测项目前台使用的是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);
}
分享到:
相关推荐
方法一: 根据table的id属性和table中的某一个元素定位其在table中的位置 table包括表头,位置坐标都是从1开始算 ... # 按行查询表格的数据,取出的数据是一整行,按空格分隔每一列的数据 table_tr_list = d
selenium方法获取静态页面数据方法 from selenium import webdriver import time opt = webdriver.ChromeOptions() opt.set_headless() driver =webdriver.Chrome(options=opt) while True: print('页数:',page...
python selenium 获取接口数据。 selenium没有直接提供查询的函数,但是可以通过webdriver提供的API查询,使用的函数是Network.getResponseBody webdriver提供的API文档:...
Python+selenium网站数据表格快速收集存储到MYSQL 这是一个实用的程序,可以修改相关参数即可使用,如果使用过程不会的,可以加入QQ群咨询:637125060
SELENIUM获取网址.pySELENIUM获取网址.pySELENIUM获取网址.pySELENIUM获取网址.py
selenium爬虫学习——CNKI内容数据获取
Python 通过Selenium浏览器自动化测试框架获取HTML代码中的可用数据 Python源码Python 通过Selenium浏览器自动化测试框架获取HTML代码中的可用数据 Python源码Python 通过Selenium浏览器自动化测试框架获取HTML代码...
selenium数据驱动模式的讲解。
cd D:\selenium快速入门示例 D: set JAVA_HOME=E:\tools\java\jdk1.8.0_181x64 set PATH=%JAVA_HOME%\bin;%PATH% javac -encoding utf-8 -Djava.ext.dirs=. SogouTest1.java java -Djava.ext.dirs=. SogouTest1 ...
selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium
在测试中使用Selenium IDE辅助测试,使用本身命令存储变量,实现数据驱动测试,分享给大家写了一个简单的介绍。
在Selenium WebDriver中使用By.Xpath快速定位页面元素,实现多属性定位一个元素。
C#操作Selenium自动化测试,采集数据实例源码。压缩包内有所需的资源,代码内有详细注释。可用于爬虫,采集数据,效率低,通过率高。
python获取html动态生成的数 python获取html动态生成的数
基于Python和Selenium的BOSS直聘Python岗位数据分析-数据预处理后用于分析的数据
Python selenium 获取 QQ 群信息,包含QQ号码,群号,群名称,群人数,群规格,并保存为本地 Excel 文件
selenium快速入门及常用api
selenium入门数据,测试人员必备