请选择 进入手机版 | 继续访问电脑版

12360技术网 - 专业IT技术发表平台

 立即注册  找回密码
查看: 1856|回复: 3

python+selenium自动化测试-1概述

[复制链接]

26

主题

33

帖子

235

积分

中级会员

Rank: 3Rank: 3

积分
235
发表于 2020-1-23 14:24:50 | 显示全部楼层 |阅读模式
        用selenium自动化测试差不多两年了,有很多心得体会。在回归测试方面,selenium有很大的优势,一定程度上代替了手工测试,让我有更多时间关注项目业务和其他测试技术。
学自动化技术至少要掌握以下几个步骤:获取元素,操作元素,设计脚本业务逻辑,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告。值得一提的是,无论是web自动化还是APP自动化,获取元素都是最关键的一环,不知道如何获取元素,就找不到相应的位置进行输入文本值、判断文本值、点击按钮等等一系列操作。
        在此,本人打算写一系列的关于自动化测试方面的介绍,也是为了更好地积累经验,方便回顾。
        现在很多招聘网站都写着,自动化测试类似的字眼,自动化测试很多人都觉得非常高大上,其实,它只是运用技术,用工具执行编写好可执行的脚本,代替部分人工重复的工作而已。对于没有编程经验的测试人员来说,要学web自动化测试,前提还是要学好基础的编程语言(java或者C,学会java,学习python难度会降低很多)和HTML。【这里推荐一个java的学习网站:http://how2j.cn?p=17361
以前因为不想打码(脱发)也考虑到往业务层面发展才选择了测试,走着走着,发现测试之路遇上了瓶颈,突破点还是技术,提高自己的技术能力(不仅仅是应用,还有一些原理),对于IT这个行业来说是很必要的,除非你不选择走IT这条路。
        
        web自动化测试是一种把人为驱动的测试行为转化为机器执行的一种过程,目的不言而喻,提高测试效率,保证产品质量。初学者在学自动化测试中,一般会有三个误区:(1)自动化测试完全取代手工测试。声明,这是不可能的,手工测试具有自动化测试不具备的灵活性,那是因为,自动化测试很难有较高的测试用例覆盖比例。高程度的测试用例覆盖比例是需要很大的开发成本和时间成本。(2)自动化测试比手工测试牛逼。看起来是有一定道理,其实大家只是各司其职而已,自动化测试不能完全替代手工测试,证明手工测试有其存在的必要性。当然,学好自动化测试呢,会更有利于职业的发展。(3)自动化测试可以发现更多的BUG。前面有提到过,这技术主要还是用来做回归测试。主要还是检测流程和基础功能。
        
        虽然说自动化测试能够解决重复的手工工作,但也不是所有项目都适合自动化测试的。自动化测试项目一般遵循以下三个条件:(1)需求变动不频繁。特别是那些敏捷开发项目,上午需求是这个,下午需求可能就变了,如果要自动化,你确定你写代码的速度能够跟上变化?即使能跟上,做的很多都是无用功,效益低。(2)项目周期足够长。项目周期不长,不需要长期维护或者更新发布,做自动化测试没什么意义,浪费时间。(3)项目需要重复回归测试。
        
        那么,web自动化测试需要用到什么工具呢?答案当然是selenium。selenium是一个用于Web应用程序测试的工具,与其他测试工具相比,使用 Selenium 的最大好处是:Selenium 测试直接在浏览器中运行,就像真实用户所做的一样。Selenium 测试可以在 Windows、Linux 和 Macintosh上的 Internet Explorer、Chrome和 Firefox 中运行。其他测试工具都不能覆盖如此多的平台。
        
        本系列文章探讨的是selenium2,其整合了selenium1和webdriver。webdriver曾经是selenium1的竞争对手,因为两者的互补性优势而合并。WebDriver 是基于面向对象的 API,它更多的是从用户角度出发。而 Selenium 提供的是基于字典的 API,用户可以很方便的看到所以支持的方法。毋庸置疑的是,WebDriver 提供的 API 更为简洁,对用户更加的友好。随着webdriver的不断完善,实际上webdriver已经成为了selenium2的代名词,所以很多时候说selenium2,实际上就是说webdriver了。
selenium2是利用浏览器原生的API,封装成一套更加面向对象的Selenium WebDriver API。直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的)。由于使用的是浏览器原生的API,速度大大提高,而且调用的稳定性交给了浏览器厂商本身,显然是更加科学。然而带来的一些副作用就是,不同的浏览器厂商,对Web元素的操作和呈现多少会有一些差异,这就直接导致了Selenium WebDriver要分浏览器厂商不同,而提供不同的实现。
selenium RC(selenium remote control)原理:测试代码输入操作给webdriver,webdriver再去控制浏览器,最终达到的效果就是代码实现对浏览器的操作。WebDriver类的功能是通过给一个remote server发送指令来控制浏览器。而这个remote server是一个运行WebDriver wire protocol(webdriver线协议)的server。而RemoteConnection类就是负责与Remote WebDriver server的连接的类。 remote server实际上是Hub,通过指令控制浏览器的操作。
可以注意到有这么一个新建WebDriver类的对象时候的参数command_executor。默认值等于'http://127.0.0.1:4444/wd/hub'。这个值表示的是访问server的URL,因此这个值作为了RemoteConnection类的构造方法的参数。因为要连接remote server,URL是必须的。 现在再来看RemoteConnection类的实例方法execute。这个方法有两个参数:command、params。
(1)command表示期望执行的指令的名字。打开self._commands这个dict,查看Command.FIND_ELEMENT的value.。指令的URL部分包含了几个组成部分:
◆HTTP请求方法。WebDriver wire protocol中定义的指令是符合RESTful规范的,通过不同请求方法对应不同的指令操作。
◆sessionId. sessionId表示了remote server和浏览器的一个会话,指令通过这个会话变成对于浏览器的一个操作。
◆ element 这一部分用来表示具体的指令。selenium.webdriver.remote.command.Command类里的常量指令又在各个具体的类似find_elements的实例方法中作为execute方法的参数来使用。
这样selenium.webdriver.remote.webdriver.WebDriver类中实现各种操作的实例方法与WebDriver wire protocol中定义的指令的一一对应。 selenium.webdriver.remote.webelement.WebElement中各种在WebElement上的操作也是用类似的原理实现的。
(2)实例方法execute的另一个参数params则是用来保存指令的参数的。这个参数将转化为JSON格式,作为HTTP请求的body发送到remote server。 remote server在执行完对浏览器的操作后得到的数据将作为HTTP Response的body返回给测试代码,测试代码经过解析处理后得到想要的数据。
 
推荐:
(1)web自动化环境搭建:python+selenium自动化测试-2环境搭建
(2)python+selenium自动化测试-18Firefox下载自动保存文件
                                                                                                                        
                                                    
  • 点赞                        2                        
  • 收藏                        
  • 分享                                                                                                                        
  •                                                         
                                      
    • 文章举报                           
                                                
                                                                        
                                            
                                                        测试开发攻城狮                                                                发布了48 篇原创文章 · 获赞 15 · 访问量 1万+                                                                                            私信                                                            关注
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x




上一篇:codeblocks下载-安装和使用
下一篇:Git入门教程
回复

使用道具 举报

0

主题

15

帖子

325

积分

中级会员

Rank: 3Rank: 3

积分
325
发表于 2020-1-24 17:54:53 | 显示全部楼层
楼主发贴辛苦了,谢谢楼主分享![www.12360.co]
回复

使用道具 举报

0

主题

13

帖子

283

积分

中级会员

Rank: 3Rank: 3

积分
283
发表于 2020-1-25 13:41:33 | 显示全部楼层
既然你诚信诚意的推荐了,那我就勉为其难的看看吧![www.12360.co]
回复

使用道具 举报

16

主题

24

帖子

226

积分

中级会员

Rank: 3Rank: 3

积分
226
发表于 5 天前 | 显示全部楼层
楼主,我太崇拜你了![www.12360.co]
社区不能没有像楼主这样的人才啊!
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

12360技术网

GMT+8, 2020-2-18 06:30 , Processed in 0.131869 second(s), 32 queries .

本网站内容收集于互联网,Www.12360.Co不承担任何由于内容的合法性及健康性所引起的争议和法律责任。 欢迎大家对网站内容侵犯版权等不合法和不健康行为进行监督和举报。

© 2019-2020 Www.12360.Co

快速回复 返回顶部 返回列表