1. 介绍

1.1 介绍

python的selenium库是可以实现用代码模拟用户上网行为的功能,所以python的selenium库的使用技巧成为了大部分测试工程师的必备技能。python的selenium通过chromedriver驱动可以使用python代码启动浏览器、打开网页、读取网页数据、提交用户表单、登录网址平台等等用户日常的上网行为,这就可以让我们使用python代码去模拟用户去操作网站功能、去使用平台功能。

使用python的selenium库可以帮助测试工程师去自动化测试研发开放的功能是否正常,可以帮助数据分析工程师自动化采集网站数据,可以帮助想要做搜索引擎平台的站长轻松实现网页蜘蛛的功能。

今天福哥就要在我们的tfwindows上搭建这个selenium环境,没有弄过的童鞋可以围观了。

2. 安装

2.1 安装selenium库

通过pip工具安装selenium库。

pip install selenium

2.2 安装chrome浏览器

这个就不教了,福哥给出chrome官网下载地址,别去第三方的网站下载就可以了!

https://www.google.cn/chrome/

默认从官网下载的是chrome安装器,安装过程中需要联网。

2.3 安装chromedriver驱动

从官网选择最新版本下载下来,版本一定要和我们按照的chrome浏览器的版本一致

2.3.1 chrome版本号

打开chrome浏览器,点地址栏右边的三个点,选择“帮助”>“关于 google chrome”,找到下图中的版本号。

2.3.2 下载chromedriver驱动

打开驱动下载页面,找到匹配的版本的驱动。

我们只需要保证版本号前面的3段匹配即可,最后一段不用管他,也就是说“91.0.4472”匹配即可。会有很多匹配的项目,因为是windows平台,所以我们只需要找到win32版本就可以了。如果有多个win32版本,找出版本号最后一段最大的那个即可。

http://chromedriver.storage.googleapis.com/

把<key>…</key>里面的资源uri复制导驱动网址后面就可以下载了。

http://chromedriver.storage.googleapis.com/91.0.4472.101/chromedriver_win32.zip

2.3.3 安装chromedriver驱动

解压缩下载下来的压缩包,将里面的chromedriver.exe放到python的scripts目录下面。

2.4 隐藏控制台信息

默认情况下,我们使用selenium连接服务器会有一堆的控制台信息,非常不便于我们调试程序。

2.4.1 安装pypiwin32

首先我们需要安装pypiwin32库。

pip install pypiwin32

2.4.2 修改service.py

接着我们要改造service.py脚本,下面是service.py脚本的路径位置。

c:python38libsite-packagesseleniumwebdrivercommonservice.py

打开service.py脚本,首先导入create_no_window。

from win32process import create_no_window

接着找到“starts the service”关键字位置,修改subprocess.popen调用,增加参数create_no_window。

self.process = subprocess.popen(cmd, env=self.env,
                                            close_fds=platform.system() != 'windows',
                                            stdout=self.log_file,
                                            stderr=self.log_file,
                                            stdin=pipe,
                                            creationflags=create_no_window)

配置完需要重新启动编辑器idle,然后运行python程序,这时候观察控制台你会发现“这个世界清静了~~”

3. 测试

现在编写测试代码来测试selenium库是否正常。

3.1 测试

3.1.1 代码

建立selenium.py程序文件,写入如下代码。

#encoding=utf-8

from selenium import webdriver
import time
import re

# init
opts = webdriver.chromeoptions()
opts.add_argument("--disable-gpu")
opts.add_argument("--no-sandbox")

# set opts
chrome = webdriver.chrome(options=opts)

# load baidu.com
chrome.get("http://www.baidu.com")

# find kw input and type 'site:tongfu.net' in it
input = chrome.find_element_by_id("kw")
input.send_keys("site:tongfu.net")
button = chrome.find_element_by_id("su")
button.click()

# wait
time.sleep(3)

# get page source
source = chrome.page_source

# test source
regexp = re.compile(r"首页- 同福网 tongfu.net", re.m)
mats = regexp.search(source)
if mats:
    print (mats.group())
else:
    print ("没有找到")

# close
chrome.close()

3.1.2 启动程序

运行selenium.py程序。

首先python会自动启动chrome浏览器。

接着自动打开www.baidu.com首页,自动输入关键字“site:tongfu.net”,自动点击搜索按钮。

最后检查页面源代码里是否包含“首页- 同福网 tongfu.net”。

4. 总结

使用selenium可以实现模拟大部分用户的上网行为,可以用来测试网站功能是否正常,包括用户注册、用户登录、发布主题、回复主题、点赞等等非常具体的操作,selenium是测试工程师的必修课。