0. 基础

python版本

python-3.6.4

编辑器

pycharm-2018.2.4

系统

Windows7-64bit-旗舰版

浏览器

Google Chrome 版本 70.0.3538.77(正式版本) (64 位)

webdriver

ChromeDriver v2.42 (2018-09-13)

时间

2018/11/09

 

1. Selenium模块

概述

Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。

功能

○ 框架底层使用JavaScript模拟真实用户对浏览器进行操作。测试脚本执行时,浏览器自动按照脚本代码做出点击,输入,打开,验证等操作,就像真实用户所做的一样,从终端用户的角度测试应用程序。

○ 使浏览器兼容性测试自动化成为可能,尽管在不同的浏览器上依然有细微的差别。

○ 使用简单,可使用Java,Python等多种语言编写用例脚本。

安装

打开cmd终端窗口,运行如下命令,等待安装即可:

pip install selenium

python selenium 身份 python的selenium模块_python

 

2. webdriver插件

概述

该插件专门用来控制浏览器,不同浏览器所用的插件不同,比如谷歌浏览器的话就下载chromedriver。

安装

注:插件版本必须和浏览器的版本一致。

     下面是谷歌浏览器与chromedriver的版本对应关系,供参考:

      ChromeDriver v2.43 (2018-10-16)----------Supports Chrome v69-71

      ChromeDriver v2.42 (2018-09-13)----------Supports Chrome v68-70

      ChromeDriver v2.41 (2018-07-27)----------Supports Chrome v67-69

      ChromeDriver v2.40 (2018-06-07)----------Supports Chrome v66-68

      ChromeDriver v2.39 (2018-05-30)----------Supports Chrome v66-68

      ChromeDriver v2.38 (2018-04-17)----------Supports Chrome v65-67

      ChromeDriver v2.37 (2018-03-16)----------Supports Chrome v64-66

      ChromeDriver v2.36 (2018-03-02)----------Supports Chrome v63-65

      ChromeDriver v2.35 (2018-01-10)----------Supports Chrome v62-64

chromedriver官方下载链接

本文博主所用的浏览器为Google Chrome【 版本 70.0.3538.77(正式版本) (64 位)】,因此需要下载的chromedriver版本为ChromeDriver v2.42 (2018-09-13),如下所示:

python selenium 身份 python的selenium模块_selenium_02

python selenium 身份 python的selenium模块_xpath helper_03

python selenium 身份 python的selenium模块_python selenium 身份_04

将下载好的压缩包拷贝到python的安装目录,并将其解压即可,如下所示:

python selenium 身份 python的selenium模块_xpath helper_05

 

3. xpath helper插件

概述

这是一个谷歌浏览器的插件,可以进行xpath查询,很方便。

安装

1) 下载链接

百度云下载链接 - 密码:w9dk

2) 下载好之后,将压缩包进行解压,将解压出来的离线Chrome插件xpath-helper.crx放到一个新建的文件夹内

python selenium 身份 python的selenium模块_chromedriver_06

3) 将xpath-helper.crx的文件扩展名改成.zip或者.rar

python selenium 身份 python的selenium模块_chromedriver_07

python selenium 身份 python的selenium模块_selenium_08

4) 解压该文件

python selenium 身份 python的selenium模块_python_09

5) 在Chrome的地址栏中输入【chrome://extensions/ 】,打开Chrome浏览器的扩展程序管理界面,并在该界面的右上方的开发者模式按钮上打勾

python selenium 身份 python的selenium模块_chromedriver_10

6) 在勾选开发者模式选项以后,在该页面就会出现加载正在开发的扩展程序等按钮,点击“加载正在开发的扩展程序”按钮,并选择刚刚解压的Chrome插件文件夹的位置,即可完成安装

python selenium 身份 python的selenium模块_xpath helper_11

python selenium 身份 python的selenium模块_python_12

7) 快捷打开插件方式【shift+ctrl+X】

python selenium 身份 python的selenium模块_python_13

 

4. 应用实例

实例内容

爬取斗鱼官网的LOL主播信息并将其显示出来,网址为https://www.douyu.com/g_LOL,并且要能实现网页的自动翻页和自动关闭。

python代码

# 导入所需模块库 from selenium import webdriver import time # 程序主框架 def douyu(): # driver就是可以操作谷歌浏览器的一个对象 driver = webdriver.Chrome() # get()里面写的是我们的url地址,自动打开该网页 driver.get('https://www.douyu.com/g_LOL') # 获取所有主播的信息 while 1: # 得到所有主播的信息,并存入列表 content_list= [li li li ...] content_list = driver.find_elements_by_xpath("//ul[@id='live-list-contentbox']/li") # 遍历各个主播的信息 content就是一个一个的li标签,是一个element元素 for content in content_list: author = content.find_element_by_xpath(".//span[@class='dy-name ellipsis fl']").text num = content.find_element_by_xpath(".//span[@class='dy-num fr']").text print(author, num) # 自动翻页 next_url_list = driver.find_elements_by_xpath("//a[@class='shark-pager-next']") if len(next_url_list) == 0: break next_url_list[0].click() # 浏览器还没有反应过来,所以想获取数据是不可以的,必须等待一个时间 time.sleep(1) # 延时2s time.sleep(2) # 控制浏览器自动关闭, 并且不会再进程中产生多余的浪费 driver.quit() # 执行程序主框架 if __name__ == '__main__': douyu()

程序部分代码解释:通过xpath查询页面元素

1) "//ul[@id='live-list-contentbox']/li"

获得当前页面任意位置处的属性为【id='live-list-contentbox'】的【<ul>】标签下的【<li>】标签

python selenium 身份 python的selenium模块_chromedriver_14

2) ".//span[@class='dy-name ellipsis fl']"

获得当前【<li>】标签下任意位置处的属性为【class='dy-name ellipsis fl'】的【<span>】标签的元素

python selenium 身份 python的selenium模块_python_15

3) ".//span[@class='dy-num fr']"

获得当前【<li>】标签下任意位置处的属性为【class='dy-num fr'】的【<span>】标签的元素

python selenium 身份 python的selenium模块_selenium_16

4) "//a[@class='shark-pager-next']"

获得当前页面任意位置处的属性为【class='shark-pager-next'】的【<a>】标签的元素

python selenium 身份 python的selenium模块_python selenium 身份_17

5) 注:xpath helper 插件只是一个工具,可以测试xpath代码是否有效,如果在插件中测试有效,那么在程序中就没有问题了。

运行结果

程序运行正常,自动打开网页、自动翻页、自动关闭,正常输出各个主播的信息【名称 观看人数】。

python selenium 身份 python的selenium模块_python selenium 身份_18