Selenium简介
Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。
主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。
测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本(这里主要是针对selenium ide)
Selenium历程
04年,诞生了Selenium Core,Selenium Core是基于浏览器并且采用JavaScript编程语言的测试工具,运行在浏览器的安全沙箱中,设计理念是将待测试产品、Selenium Core和测试脚本均部署到同一台服务器上来完成自动化测试的工作。
05年,Selenium RC诞生,就是selenium1 ,这个时候,Selenium Core其实是Selenium RC的核心。
Selenium RC让待测试产品、Selenium Core和测试脚本三者分散在不同的服务器上。(测试脚本只关心将HTTP请求发送到指定的URL上,selenium本身不需要关心HTTP请求由于什么程序编程语言编写而成)
Selenium RC包括两部分:一个是Selenium RC Server,一个是提供各种编程语言的客户端驱动来编写测试脚本
07年,Webdriver诞生,WebDriver的设计理念是将端到端测试与底层具体的测试工具分隔离,并采用设计模式Adapter适配器来达到目标。WebDriver的API组织更多的是面向对象。
08/09年,selenium2诞生,selenium2其实是selenium rc和webdriver的合并,合并的根本原因是相互补充各自的缺点
09年,selenium3诞生,这个版本剔除了selenium rc , 主要由 selenium webdriver和selenium Grid组成, 我们日常使用的其实就是selenium webdriver,至于selenium grid是一个分布式实现自动化测试的工具
那么今天我们就要说说selenium3(selenium webdriver)的工作原理,下面简称selenium(以上具体时间可能不太准确,我也是通过网络资料了解到的,抛砖引玉–)
Selenium原理
1、访问网站
WebDriver 官方网站
2、webDriver的的http接口:
3、具体原理
首先运行webdriver.exe文件,它会绑定一个http端口,通过http:端口来进行调用相关的接口,webDriver通过对应的浏览器driver(驱动文件)进行调用上述的API,其实Selenium就是封装了这些api实现的一系列的窗口操作,主要就是用restful接口对开启的本地端口进行发送API指令,这样driver就可以向浏览器发送对应的指令,即可完成打开浏览器、访问网站、切换Tab窗口等操作。
Python从零实现
Chrome和Firefox的各个版本的driver下载地址
Chrome和Firefox的各个版本的driver下载地址
代码实现:
代码:
import requests
import os
from threading import Thread
if __name__ == '__main__':
webdriver_path = "/Users/cbaiotaigc/Downloads/chromedriver_mac64/chromedriver"
# 启动webdriver对应浏览器的驱动,比如说上面的Chrome对应的chromedriver
Thread(target=lambda: os.system(webdriver_path)).start()
#
# requests.post()
上面红框里的端口就是chromedriver程序(windows里是chromedriver.exe)启动的http服务的本地端口。
自动打开一个受控的浏览器
访问某个网址:
https://baidu.com
获取页面的title
其他的接口调用可以自行封装,即可完整的实现selenium框架的代码。