作者:霍格沃兹测试开发学社
链接:https://www.zhihu.com/question/59854292/answer/2827875817
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
什么是自动化测试
自动化测试就是,假定一些预设值,由机器自动化完成的测试。
web自动化测试,将自动化测试技术艺能用到web测试中,是假定一些预设值,由程序驱动浏览器来完成web程序的测试,如下图:
Selenium
web自动化测试的技术手段和框架很多,这里我们主要介绍Selenium
Selenium官网 4
Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中,就像用户在操作一样。
我们通常所说的Selenium是对Seleninum的总称,其中包括三个项目,分别是:
1. Selenium WebDriver
2. Selenium IDE
3. seleninum Grid
后续相关的文章我们只关注Seleninum WebDriver
Selenium WebDriver
selenium webdriver 其实就是不同语言基于实现了W3C WebDriver协议从而达到能控制浏览器的代码库,它提供了简单的API接口使测试人员可以很方便的控制浏览器的各种行为。
运行自动化的几种方式
运行机理:webdriver通过driver(浏览器驱动)将执行命令发送给浏览器;同样的浏览器在执行玩命令之后通过相同的通道将信息返回给webdriver。
整体就是一个C/S架构,我们的webdriver是作为客户端存在。
这种方式是Seleninum Webdriver和浏览器驱动程序和浏览器在同一台主机
当然我们也可以将webdriver独立到另外一台服务器,然后通过Remote进行自动化。
远程连接我们还可以通过Seleninum Server或者Seleninum Grid来实现,从而进行分布式的测试。
环境安装
Python
Selenium
浏览器驱动: 相关地址 7
简单实例
from selenium import webdriver
import time
driver = webdriver.Chrome(executable_path='./chromedriver')
driver.maximize_window()
driver.get('https://www.baidu.com')
driver.find_element_by_id('kw').send_keys('python')
driver.find_element_by_id('su').click()
time.sleep(2)
driver.quit()
代码分析:
其实实例化driver的核心代码是这段,我们可以通过IDE进入到源码中,看到首先建立Service,其实就是通过命令行将浏览器驱动运行起来
self.service = Service( executable_path, port=port, service_args=service_args, log_path=service_log_path) self.service.start()
服务启动后,创建一个连接,从而进行后续的操作
try: RemoteWebDriver.__init__( self, command_ executor=ChromeRemoteConnection( remote_server_addr=self.service.service_url, keep_alive=keep_alive), desired_ capabilities=desired_capabilities) except Exception: self.quit() raise
正如我们介绍Selenium的时候说过Selenium Webdriver其实是实现了The WebDriver Wire Protocol协议,而协议其实就是一些Http相关的请求,具体信息我们可以在这 1查看。
下面我们通过requests来实现相同的功能,首先我们需要启动Service,这里我们可以使用Selenium Server来代替,或者我们也可以直接运行chromedriver等浏览器驱动程序。这里我使用Selenium来完成。
首先下载selenium-server-standalone-{VERSION}.jar,下载地址 1
然后启动
java -jar selenium-server-standalone-{VERSION}.jar
启动后控制台会给我们打印相关的服务地址
这个时候我们去浏览器访问一下这个地址: http://127.0.0.1:4444/wd/hub
我这里会被自动跳转到
我们点击Create Session,创建成功后就会发现启动了一个浏览器
其实如果您打开了chrome的检查面板,发现其实就是发送了一个Post请求,相关的信息都是同协议相同,那我们就以postman来调用这些接口看看效果。
在发送这些请求的时候,浏览器是在做相应变化的
学习安排上
如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助,朋友们如果需要可以自行免费领取 【保证100%免费】
软件测试面试题合集
我们进阶学习自动化测试必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片进群即可自行领取。