在做自动化测试的时候,避免不了校验表格中的数据是否正确,而获取数据又成了一个难题,待测项目前台使用的是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网站数据表格快速收集存储到MYSQL 这是一个实用的程序,可以修改相关参数即可使用,如果使用过程不会的,可以加入QQ群咨询:637125060
在IT行业中,自动化测试和网页数据抓取是两个重要的领域,而Selenium、PhantomJS以及Python在这两个领域中都扮演着关键角色。本话题主要关注如何利用Selenium结合PhantomJS通过Python来获取HTML动态生成的数据。 ...
python selenium 获取接口数据。 selenium没有直接提供查询的函数,但是可以通过webdriver提供的API查询,使用的函数是Network.getResponseBody webdriver提供的API文档:...
SELENIUM获取网址.pySELENIUM获取网址.pySELENIUM获取网址.pySELENIUM获取网址.py
selenium爬虫学习——CNKI内容数据获取
Python 通过Selenium浏览器自动化测试框架获取HTML代码中的可用数据 Python源码Python 通过Selenium浏览器自动化测试框架获取HTML代码中的可用数据 Python源码Python 通过Selenium浏览器自动化测试框架获取HTML代码...
### Selenium + Java + 完整数据驱动模式 #### 一、Selenium 数据驱动模式概述 在软件测试领域,特别是Web应用测试中,Selenium是一种广泛使用的自动化测试工具。结合Java编程语言,可以构建出功能强大且灵活的...
由于它能够执行JavaScript,因此可以等待异步请求完成后再获取数据。不过,需要注意的是,Selenium并不适合大规模的数据抓取,因为它的速度相对较慢,而且频繁的HTTP请求可能会被网站服务器视为恶意行为。对于大数据...
利用selenium,手动登录获取cookie保存在本地用于登录平台(便于测试代码),访问商品页url通过Xpath选中对象拿数据,翻页,通过Xpath选中对象拿数据,翻页,通过Xpath选中对象拿数据....*** **网页源代码中是没有所需...
python+selenium爬取地理空间数据云影像的元数据,地理空间数据云影像的元数据信息是动态获取的,所以要用到selenium实现动态点击,而且翻页也需要动态去做
【TestNg_0920】是一个练习项目,主要涵盖了Selenium与Java的结合使用,以及数据驱动模式、页面对象模式和行为驱动开发(BDD)等关键概念。以下是这些知识点的详细说明: 1. **Selenium**: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爬虫使用Microsoft Edge浏览器抓取网页信息示例,功能介绍: 1、使用python+selenium; 2、使用Microsoft Edge浏览器; 3、使用XPATH获取网页元素; 4、获取网页的button,并自动点击,刷新下一页,直到获取...
本文将详细介绍如何在C#环境中利用Selenium WebDriver和PhantomJS来抓取此类网页的数据。 首先,PhantomJS是一款无头浏览器,即它没有图形用户界面,但能够像普通浏览器一样加载和执行JavaScript,这对于网页抓取...
selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium
同时,我们也可以使用 FlexUISelenium 和 FlashSelenium 两个类来获取 Flex 控件的信息,例如获取文本框中的内容,获取按钮的状态等。 通过使用 Selenium 对 Flex 程序进行自动化测试,我们可以提高测试的效率和...