自动测试框架 Selenium 简介

简介

Selenium也是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。

就我而言,我看中的功能是,模拟浏览器用户操作以及截图,在一定程度上可以做爬虫,只不过速度非常慢就是了。

环境搭建

pip install Selenium

最简示例

1
2
3
4
5
6
7
8
9
10
# -*- coding: utf-8 -*-
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys("Selenium2")
driver.find_element_by_id("su").click()
qiuttext = raw_input()
driver.quit()

以上代码的功能是

在Firefox浏览器中打开百度首页

在搜索框中输入”Selenium2”

并且单击搜索按钮

一个模拟登录的例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# -*- coding: utf-8 -*-
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.126.com")
driver.find_element_by_id("idInput").clear()
driver.find_element_by_id("idInput").send_keys("username")
driver.find_element_by_id("pwdInput").clear()
driver.find_element_by_id("pwdInput").send_keys("password")
driver.find_element_by_id("loginBtn").click()
qiuttext = raw_input()
driver.quit()

更多详情请查阅参考资料。

chrome驱动安装

https://sites.google.com/a/chromium.org/chromedriver/getting-started

下载相关chrome驱动

下载解压,你会得到一个chromedriver.exe文件,把该文件放到chrome的安装目录下…\Google\Chrome\Application\ ,然后设置path环境变量,把chrome的安装目录(我的:C:\Program Files\Google\Chrome\Application),然后再调用运行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# coding = utf-8
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys("Selenium2")
time.sleep(5)
driver.find_element_by_id("su").click()
print driver.title
qiuttext = raw_input()
driver.quit()

后期补充

此处看到

2017年5月
Chrome开始支持Headless模式
PhantomJS进入淘汰倒计时(部分核心开发者撤离)

使用 Headless Chrome 进行页面渲染
https://zhuanlan.zhihu.com/p/26810049

Splinter

Selenium 库学习笔记 (掘金)
https://juejin.im/entry/59180abc128fe1005cc5b37d
一些基础的 Selenium 的使用知识。 —— 由醋分享

是什么:Splinter是一个自动化测试网络应用的Python库。

为什么需要它: 大家都知道,没有什么比自动化网络应用测试更无聊的事了。有了Splinter,就可以将打开浏览器、输入URL、填写表单、点击按钮等全部操作自动化。

特定的浏览器需要使用相应的驱动器(drivers),不过还好已经自带了Chrome和Firefox驱动器。另外,Splinter还可以通过Selenium Remote来远程控制其他机器上的浏览器。你甚至可以在目标浏览器中手动执行JavaScript代码。

如果你想知道某个浏览器在浏览指定网站时的具体情况,那么Splinter将是一个很有用的工具。如果想了解不依赖浏览器与网站进行交互,可以查看Twill。(译者:Twill是一种脚本语言,支持用户通过命令行浏览网络。)

#参考资料
[1] Python Selenium Bindings 文档

[2] 51testing selenium 专题

[3] 《selenium私房菜》 (下载地址在[2])

[4] 某自动化测试从业人员的blog

[5] 《Selenium2 Python自动化测试实战(第二版)》

[6] splinter 0.7.3
[7] Apptium Python
[8] 软件测试新趋势
[9] 利用 Python + Selenium 自动化快速截图