文章目录
1.什么是selenium?
1.1Selenium1
Selenium1:Jason、Higgis、JavaScript库、selenium RC(存在沙箱问题)、selenium IDE(录制自动化测试脚本)、selenimu GRID(分布式)。
缺点:浏览器的安全性会使一些操作被禁止(selenium IDE核心是JavaScript库)。
1.2Selenium2
Selenium2(Selenium1+WebDriver)
WebDriver 解决了 Selenium 存在的缺点(比如,绕过 JS 沙箱);
Selenium 解决了 WebDriver 存在的问题(例如支持广泛的浏览器);
Selenium 的主要贡献者们都觉得合并项目是为用户提供最优秀框架的最佳途径。
webdriver的工作原理
通俗理解——乘客做出租车
乘客:脚本
司机:webdriver(驱动)
出租车:浏览器
- 启动浏览器后,selenium-webdriver会将目标浏览器绑定到特定的端口,启动后的浏览器则作为webdriver的remote server。
- 客户端(也就是测试脚本),借助ComandExecutor发送HTTP请求给sever端(通信协议:The WebDriver Wire Protocol,在HTTP request的body中,会以WebDriver Wire协议规定的JSON格式的字符串来告诉Selenium我们希望浏览器接下来做什么事情)。
- Sever端需要依赖原生的浏览器组件,转化Web Service的命令为浏览器native的调用来完成操作。
1.3selenium3
selenium3:增加了一些浏览器的原生驱动(Safari,edge(MS))。
1.4selenium工具集特点(重点)
1.支持多平台。eg:firefox、IE、chrome、edge
2.支持多语言。eg:C、JAVA、Python、Ruby
Selenium是ThroughtWorks公司一个强大的开源Web功能测试工具系列,支持多平台、多浏览器、多语言去实现自动化测试。
Selenium2将浏览器原生的API封装成WebDriver API,可以直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的),所以就像真正的用户在操作一样。
1.5自动化测试适合什么样的项目?
1.UI自动化:功能稳定、界面稳定
时机:前后端功能都开发完成后
2.接口自动化:功能稳定
时机:后端功能开发完成后
2.使用selenium IDE录制脚本
以火狐浏览器为例:
1.创建项目
2.输入起始URL
3.录制并给脚本命名
4.按需求导出成指定格式并保存到指定路径
3.一个简单python脚本
# 可加可不加,防止乱码(在 Notepad++中必须加)
# coding = utf-8
# 要想使用selenium 的webdriver 里的函数,首先把包导进来
from selenium import webdriver
import time
# 操控的浏览器,此时用的是火狐浏览器
# 当然也可以换成Ie 或Firefox。browser 可以随便取,但后面要用它操纵各种函数执行
browser = webdriver.Firefox()
time.sleep(3) ##等待三秒
browser.get("http://www.baidu.com") ##驱动打开http://www.baidu.com网址
time.sleep(3)
# 一个控件有若干属性id 、name、(也可以用其它方式定位),百度输入框的 id 叫 kw ,我要在输入框里输入selenium
browser.find_element_by_id("kw").send_keys("selenium")
time.sleep(3)
# 搜索的按钮的id 叫su ,我需要点一下按钮( click() )
browser.find_element_by_id("su").click()
# 退出并关闭窗口的每一个相关的驱动程序。
browser.quit()
close与quit区别:browser.close()
只关闭浏览器
browser.quit()
不仅关闭浏览器,还会释放资源