自动化测试框架之selenium学习笔记
selenium介绍
Selenium 是一个用于Web应用程序测试的工具
Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。
支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等浏览器。
这个工具的主要功能包括:
测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。
测试系统功能——创建回归测试检验软件功能和用户需求。
支持自动录制动作和自动生成 .Net、Java、Perl、Python等不同语言的测试脚本
其实好多小伙伴在学习爬虫的时候,模拟登陆都是大家的一大难点,从http抓包分析,到js前端加密,让好多学习爬虫的小伙伴焦头烂额,那么我们今天换一种思路用selenium框架来试试吧。
但是在工作当中我们逐渐的发现selenium除了可以很好的完成自动化测试的功能之外,我们还可以用selenium轻松的实现爬虫的模拟登陆。
Python selenium以及webdriver的安装
Selenium本身是支持多种语言的,比如: .Net、Java、Perl、
当然Python也是支持的,所以我们可以在Python当中安装selenium,由于我们使用selenium需驱动浏览器,所以我们需要安装对应浏览器和对应浏览器版本的web驱动。
在这里,我们首先在命令行当中安装selenium框架。
pip install selenium
安装成功之后,我们来下载安装浏览器的驱动,在这里大家要明白的是selenium实现像用户一样的操作是需要浏览器的驱动的,我们今天以chrome浏览器为例子:
首先我们看下载的地址(需要*)
https://sites.google.com/a/chromium.org/chromedriver/downloads,
也可以到http://chromedriver.storage.googleapis.com/index.html 下载
然后对应你的chrome的版本
然后对应chrome的版本下载对应的driver
下载下来我们为了偷懒就直接讲下载好的drive解压放到我们Python的目录下,这样就可以使用Python配置好的环境变量了
我们尝试这样的一段代码
#coding:utf-8
from selenium import webdriver
#定义url
url = "https://www.baidu.com/"
#实例化驱动
chrome = webdriver.Chrome()
chrome.get(url) #发起get请求
#使用选择器完成元素的捕获
search = chrome.find_element_by_id("kw")
search.send_keys("python") #发送数据
submit = chrome.find_element_by_id("su")
submit.click() #触发单击
效果如下
但是这样的效果我们不是很满意,这个像测试,不像爬虫,爬虫需要获取数据
代码如下
#coding:utf-8
from time import sleep
from selenium import webdriver
#定义url
url = "https://www.baidu.com/"
#实例化驱动
chrome = webdriver.Chrome()
chrome.get(url) #发起get请求
#使用选择器完成元素的捕获
search = chrome.find_element_by_id("kw")
search.send_keys("python") #发送数据
submit = chrome.find_element_by_id("su")
submit.click() #触发单击
sleep(3)
lists = chrome.find_elements_by_xpath('//div[@id="content_left"]/div/h3/a')
for l in lists:
print(l.text)
效果如下
我们现在可以获取到内容,但是速度有点慢,这个时候就有开发站出来发出疑问,如果我们不打开浏览器,在后台运行,是不是可以快一点。然后,就有了无头浏览器,就是没有界面的浏览器。我们将上面的代码修改为无头模式
代码如下
#coding:utf-8
from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
#生成驱动配置
chrome_option = Options()
chrome_option.add_argument("--headless") #添加无头配置
path = "G:\\Python35\\chromedriver.exe" #驱动的路径
#定义url
url = "https://www.baidu.com/"
#实例化驱动
chrome = webdriver.Chrome(chrome_options = chrome_option,executable_path = path) #添加配置
chrome.get(url) #发起get请求
#使用选择器完成元素的捕获
search = chrome.find_element_by_id("kw")
search.send_keys("python") #发送数据
submit = chrome.find_element_by_id("su")
submit.click() #触发单击
sleep(3)
lists = chrome.find_elements_by_xpath('//div[@id="content_left"]/div/h3/a')
for l in lists:
print(l.text)
效果如下
推荐阅读
-
谈谈自动化测试框架之PO设计模式
-
接口自动化测试框架之yaml
-
自动化测试框架之selenium学习笔记
-
selenium 笔记1 博客分类: 自动化测试 selenium、ide、笔记、自动化、测试
-
selenium 笔记1 博客分类: 自动化测试 selenium、ide、笔记、自动化、测试
-
selenium自动化测试unittest单元测试框架
-
Laravel框架学习笔记(二)项目实战之模型(Models),laravelmodels_PHP教程
-
selenium+python自动化测试之页面元素定位
-
Angular学习笔记之集成三方UI框架、控件的示例
-
PHP MVC框架之加载器学习笔记