Hi,大家好,关注过我的应该知道前面其实是有写selenium的,为什么要重新写,因为前面写的不是特别的明白,有很多小伙伴私信我说没怎么看懂,所以,这里写这一系列的手把手教写。
我的微信是qing_an_an,公众号是Sea_Cha,有兴趣的可以加我一起学习,我也有一个学习群,群内都是刚刚学习的朋友,更有大佬的加持,分分钟教导
什么是自动化?
让程序代替人为,自动化验证web项目功能的过程
为什么要自动化?
1. 解决回归测试(新版本正式测试之前的问题回归以及周边功能的验证)
2. 解决压力测试(多用户操作软件,统计软件服务器处理多用户请求的能力)
3. 解决兼容性测试(兼容不同的软件环境,如浏览器,操作系统,分辨率等)
4. 提高测试效率,保证产品质量
什么时候开始自动化测试?
功能测试完毕(手工测试)》》》web UI自动化
自动化测试的优缺点:
优点:
1. 较少的时间内运行更多的测试用例;
2. 自动化脚本可重复运行
3. 较少人为的错误;
4. 测试数据存储
缺点:
1. 不能取代手工测试;
2. 手工测试比自动化测试发现的缺陷更多;
3. 测试人员技能要求高
误区:
1. 自动化测试完全替代手工测试
2. 自动化测试一定比手工测试厉害
3. 自动化可以发现更多的bug
什么web项目适合做自动化测试?
1. 需求变动不频繁
2. 项目周期长
3. 项目需要回归测试
测试工具有哪些?
主流工具
1. web自动化测试:Selenium、Robot Framework
2. App自动化测试:Appium、MonkeyRunner、UIautomation
3. PC客户端自动化测试:QTP、WinRunner
4. 接口自动化测试:Jmeter、Postman、HttpUnit、RestClient、Python+requests
5. 云测平台:Testin、Testbird --》app兼容性测试
6. 性能测试:Jmeter、LoadRunner
初识selenium
特点:
1. 开源软件:源代码开放,可以根据需要来增加工具的某些功能;
2. 跨平台:Linux、Windows、MacOS
3. 核心功能:就是可以在多个浏览器上进行自动化测试,Chrome,Firefox,IE,Safari,opear
4. 多语言:java、python、C#、JavaScript、Ruby等
5. 成熟稳定:目前已被百度、腾讯等公司广泛使用
6. 功能强大:能够实现类似商业工具的大部分功能,因为开源,可实现定制化功能。
Selenium+WebDriver环境搭建
1. WebDriver是一种用于web应用程序的自动化测试工具;
2. 它提供了一套友好的API;
3. WebDriver完全就是一套类库,不依赖与任何测试框架,除了必要的浏览器驱动;
webDriver原理
1. WebDriver API(基于Java、Python、C#等语言),对于java语言来说,就是下载下来的selenium的Jar包,比如 selenium-java-3.8.1.zip包,代表Selenium3.8.1的版本
2. 浏览器的驱动(browser driver),每个浏览器都有自己的驱动,均以exe文件形式存在比如谷歌的 chromedriver.exe、火狐的geckodriver.exe、IE的IEDriverServer.exe
3. 浏览器,浏览器当然就是我们很熟悉的常用的各种浏览器(IE、Firefox、Chrome)。
简单一点就是,有一把刀,它的作用就是削水果,也可以切菜等,这把刀相当于webDriver,你呢就是写代码的人,你想让它干嘛,切菜,削水果还是其他的,写一系列的代码,然后水果刀完成它要做的动作。
道理讲完了,我们也该进入正题了,一些简单的操作,也是非常实用的。
简单的操作
1. 打开网页:get(url)
from selenium import webdriver
# 打开火狐浏览器
fox = webdriver.Chrome()
fox.get('https://baidu.com')
# 打开谷歌浏览器
gu = webdriver.Chrome()
gu.get('https://baidu.com')
其他的浏览器方法类似,通过实例化驱动,指定浏览器,打开百度网址。至于驱动,在这里之说下载自己浏览器所对应的版本的驱动即可。如果你浏览器版本是2.1.1,驱动没有的只有2.3.3也没关系,是兼容的,但是你不能下载比你浏览器版本低的驱动。
2. 刷新:refresh()
from selenium import webdriver
fox = webdriver.Chrome()
fox.get('https://baidu.com')
fox.refresh()
3. 前进:forward()
from selenium import webdriver
fox = webdriver.Chrome()
fox.get('https://baidu.com')
fox.forward()
4. 后退:back()
from selenium import webdriver
fox = webdriver.Chrome()
fox.get('https://baidu.com')
fox.back()
注意:3、4这两个操作,只能在你浏览了其他页面的情况下才能使用,这里还没有讲到元素定位,所以这里先做了解,后续熟悉元素定位后,可自行操作
5. 截屏:get_screenshot_as_file(保存路径)
from selenium import webdriver
fox = webdriver.Chrome()
fox.get('https://baidu.com')
fox.get_screenshot_as_file('F:\MES\baidu.png')
6. 退出:close(),quit()
from selenium import webdriver
fox = webdriver.Chrome()
fox.get('https://baidu.com')
fox.quit()
注意,这里两者是有区别的,quit是关闭打开浏览器中的所有窗口,而close是关闭当前窗口,所以,用的时候可别搞混了,搞混不得。
看看下面的例子,就明白了:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('https://baidu.com')
js = "window.open('https://www.jd.com/')"
driver.execute_script(js)
driver.close()
这里我用js重新打开了一个窗口,然后用close的方法关闭一个窗口,此时,你会觉得关闭的是京东的窗口吧。其实不然,你错了哦。我没有切换窗口,所以关闭了还是第一次打开的窗口,也就是百度窗口。至于为什么要做窗口切换操作,这一点后续会有一章专门讲到。敬请期待吧。
本文转载自: https://blog.csdn.net/weixin_52040868/article/details/120151225
版权归原作者 清安无别事 所有, 如有侵权,请联系我们删除。
版权归原作者 清安无别事 所有, 如有侵权,请联系我们删除。