WebDriver 自动化演变之路

Web自动化现状

 

据我观察,想学自动化的同仁都是冲着以下几点去学

1: 为了找工作学自动化 ,觉得这个高大上,面试时说了这个有加分项

2: 看到人家学,自已也想跟风

3: 在实际测试过程中重复操作太多,跳过重复测试项又担心测试不严,担心出现线上Bug

 

带着以下几个问题,我带大家来了解下自动化前世今生,如何一步步优化让自动化真正服务于企业

演变之一  Selenium  IDE

首先大家刚入门肯定会听到过IDE 吧,对,我也是从IDE 录制入门,录完之后就能看到画面在动,选择文件导出之后就可以自动生成代码,觉得好兴奋,感觉一下子就可以成为会自动 化的测试人员了

 

在这顺便也将最入门的知识一普及下,如何使用IDE  工具

首先下载http://down.51cto.com/data/2041803  xpi   并解压缩,之后拖动文件到游览器


可以选择不同语言安装


重启浏览器

在菜单栏找 这个图标



将会弹出下视窗

之后在浏览器输入网址执行任意操作

执行之后切换到Selenium IDE 窗口



就能看到有部分控件id

点击运行之后浏览器会自动执行相关操作

选择文件导出之后可以自动生成自动化代码




IDE  在刚入门时部分控件定位方式不知怎么写时,可以试着录制一次,之后导出源代码,查test() 方法中的定位方式

 

还有另一种方法是在IDE 窗体中选中一行控件,之后点find 按键,系统会在浏览器对应元素上高亮一下,如可能高亮,代表定位方式是正确的,

 

另外IDE 窗体中Command 和Target 下拉菜单是可以选择的,




IDE  工具优缺点总结

优点:  入门简单,安装之后就可以使用,也能自动生成代码,对无代码功底同仁不失为一个很好的学习范例

缺点: 脚本录制之后只能执行一次完全相同的操作,即使是数据相同,操作完全相同也无法执行第二次


演变之二  手工编写硬代码(元素,数据,代码全集成在一起)

 

基于以上缺点我们将代码做一些优化,手动编写代码的方式,可以对关键操作之后增加断言,确认结果是否与预期相同

publicstaticvoid test() {

        WebDriver driver=newFirefoxDriver();

        driver.get("http://www.baidu.com/");

        driver.findElement(By.id("kw")).sendKeys("迅银网");

        driver.findElement(By.id("su")).click();

        String text=driver.findElement(By.xpath("//h3/a[@target='_blank'][text()='-互联网金融综合服务平台']/em[text()='迅银']")).getText();

        Assert.assertEquals("迅银",text);

        System.out.println("验证PASS"+text);

    }

 




类似于上面手工编写代码如果步骤比较多的话,相同代码会很多,比如点击操作,那一条操作会要写一次

driver.findElement(By.id("xxxxxx")).click()

 

由上面实例我们可以发现

优点:手工编写代码较IDE生成代码要灵活,可以断言,可以任意增加删除代码

缺点:相同操作代码要重复编写,而已每一行还很长

演变之三  (操作方法二次封装)

 

为解决上述问題我们可以尝试将相同操作二次封装,可以精简每一行代码量

 


这样简单的二次封装下代码量就减少了不少

我们还可以将不同的操作放在一个方法里,比如网站登录多个操作封装成一个方法

最终爆露给用户的就只要输入用户名,密码两个参数就可以完成网站打开,输入用户名,密码,点登录多个操作

Login(driver,”张三”,“123456”);

 

演变之四   (数据驱动)

上述操作解决了个简化了部分代码,但如果数据要变化,就需要重新编写代码,所以我们可以继续优化操作,将代码与数据分离,比如上面登录操作,我们可以将用户名和密码放到一个Excel 文件中,




在每次执行时去读Excel  相对应的数据

第一次执行login 方法时

Login(driver,”13764142840”,“QQQQQQ”);

第二次执行是:

Login(driver,”18721694074”,“QQQQQQ”);

类似于这样,相同测试步骤我们就只需要写一次用例,也就是网上所讲的数据驱动测试

数据驱动方式有好多种,既可以从Excel  中读取数据,也可以 从XML 中读取,还可以从代码数据提供者中读取

演变之五  (POM  页面对象管理)

到这里我们了解到了数据驱动测试,但还是有个问題,如果公司以这种方式来实施自动化,首先公司得配置大量专业级别的有开发功底的自动化工程师,因为测试系统任意元素变化,与之相关的测试元素定位全要修改

所以我们可以再上面数据与代码分离的基础上继续优化,测试元素与代码实现分离

 

使用一个专门的Excel 或TXT 文档来维护测试对象,如果元素有变化,只需要 在元素管理的文档中稍作更新,与之相关的代码仍可使用

也可以用一个类来管理对象属性,如下我用一个page 的类来管理 登录属性





后续要操作登录时就直接用page.username 引用那个属性,假如userrname 的属性变了,那我们只需要修改page 中的属性即可

这种方式管理对象属性网上有一个专用名称叫Page Object Model | POM

 

现在我们知道可以将数据与代码分开,代码与元素分离,但实际还是存在一个问題,

假如 测试元素,测试数据都存在,如何样将这些步骤组合起来成为一个完整的测试用例呢,是继续用代码的方式一行行累积,还是换一种方式来编写用例呢,

 

演变之六 (关键字驱动)

为此我们可以设想下是否可以测试方法转义,比如click  给起个别名叫点击操作

我编写用例时就不需要有太多英文的操作方法,同样每个对象属性我们也可以给个中文名称

元素管理Sheet



用例编写Sheet




像上面我们将所有对象全转换成中文,编写用例时只需要选择对应的中文名称,系统就会自动匹配到相关xpath 路径出来

(这种网上的叫法叫关键字驱动,就是编写自动化用例时不需要任何代码,全部用中文就可以实现编写完用例,这样公司也不需要自动化开发人员来编写代码,功能测试人员即可自主完成用例编写)

 

Excel 虽然看起来比较完美,但是可以存在文件易丢失,损坏,所以我们还可以继续优化,将元素,数据, 用例存放到服务器数据库中,执行时动态从数据为中读取数据

演变之七  (自动化管理平台)


也可以像这样,开发一个自动化管理平台,元素录入,用例管理,测试报告检索,全在平台上进行






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值