欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

自动化测试框架之selenium学习笔记

程序员文章站 2024-03-19 19:26:28
...

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学习笔记

安装成功之后,我们来下载安装浏览器的驱动,在这里大家要明白的是selenium实现像用户一样的操作是需要浏览器的驱动的,我们今天以chrome浏览器为例子:

首先我们看下载的地址(需要*

https://sites.google.com/a/chromium.org/chromedriver/downloads

也可以到http://chromedriver.storage.googleapis.com/index.html 下载  

然后对应你的chrome的版本

自动化测试框架之selenium学习笔记

自动化测试框架之selenium学习笔记

然后对应chrome的版本下载对应的driver

自动化测试框架之selenium学习笔记

下载下来我们为了偷懒就直接讲下载好的drive解压放到我们Python的目录下,这样就可以使用Python配置好的环境变量了

自动化测试框架之selenium学习笔记

我们尝试这样的一段代码

#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() #触发单击

效果如下

自动化测试框架之selenium学习笔记

但是这样的效果我们不是很满意,这个像测试,不像爬虫,爬虫需要获取数据

代码如下

#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)

效果如下

自动化测试框架之selenium学习笔记

我们现在可以获取到内容,但是速度有点慢,这个时候就有开发站出来发出疑问,如果我们不打开浏览器,在后台运行,是不是可以快一点。然后,就有了无头浏览器,就是没有界面的浏览器。我们将上面的代码修改为无头模式

代码如下

#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)

效果如下

自动化测试框架之selenium学习笔记