前言
最开始认识 selenium 是因为我在抓取某网站时,遇到了一定的难度,而且完全不知道对面开发者给我埋了什么坑。在搜索了大量的资料后发现了这样一个神器。
selenium 作为一款自动化测试工具,能够驱动目前市面上主流的几款浏览器,包括 Chrone Firefox Safari 等。由于本人比较喜欢使用 Chrome ,所以本文的浏览器驱动只演示 Chrome。
selenium 支持的编程语言有 C# Groovy Java Perl PHP Python Ruby Scala 但是在本文中我只使用 python3 进行演示。
下面就开始介绍 selenium 的安装,本次安装将 Linux 和 Windows 平台下进行演示。
Linux 安装 selenium
在 linux 下安装 selenium 实现浏览器自动化,首先需要确保你的 linux 操作系统拥有桌面环境,并且能正常输出图像到显示器或者通过 vnc 能够正常的链接到远程桌面,如果你使用的是不带桌面环境的 linux 我建议你使用 headless chrome,当然如果愿意折腾的话也可在 linux 服务器上,安装一个桌面环境不过我个人不建议你这么做。
linux 安装 selenium 我将使用 树莓派进行演示,操作系统我安装的 respbian 自带桌面的这一款,也就是 https://www.raspberrypi.org/downloads/raspbian/ 页面的第一款 ,名为 RASPBIAN STRETCH WITH DESKTOP 。
当然如果你使用的 linux 其他发行版,并且已经安装了桌面环境也可以参考本教程
安装 selenium 及其驱动
首先连接上你的树莓派
更新软件源
sudo apt update
下载浏览器驱动的时候需要注意浏览器的驱动和浏览器版本是有一定关系的所有我们不能从官网上下载驱动,需要从 respbian 默认软件源下载别人打包好的驱动。而且 chrome 在 Linux 平台上一般是使用的 chrome 的上游 chromium ,chromeium 与 chrome 的区别就是 chrome 在 chromium 的基础上进行了一些商业上的修改,大部分功能并无差别。
下载 浏览器驱动 chromedriver
sudo apt install chromium-chromedriver
需要注意的是 apt 安装的软件并不是总在 环境变量里边可以直接使用,比如我们刚才安装的 chromedriver 就不在环境变量里边,我个人比较建议在稍后的代码你进行指定而不是直接复制到 /usr/bin,当然你也可以选择这么做。
安装 selenium
pip install selenium
到这里 selenium 就安装完成了
测试 selenium
需要注意的是 chromedriver 并不在 系统变量里边,需要在编写代码时指定
创建一个名为 foo.py 的文件写入以下内容
#! /usr/bin/env python3
# -*- coding: utf-8 -*-
from selenium import webdriver
driver = webdriver.Chrome('/usr/lib/chromium-browser/chromedriver') # 如果没有把 chromedriver 添加进系统变量的话这一步是必须指定 chromedriver 所在位置的
driver.get('https://niconiconi.fun') # 打开我的网站首页
测试代码写好后,我们必须打开桌面环境才能运行它,不然是不能挂起浏览器的。现在你可以将你的树莓派连接到显示器或者通过 vnc 连接你的桌面。连接好后在桌面上选择 LX 终端。
运行我们编写的代码
python3 foo.py
不出意外的话,应该会自动弹出 chromium 浏览器并打开 niconiconi.fun 的首页
windows 安装 selenium
安装 Chrome
打开 https://www.google.com/chrome/ 下载并安装最新版的 Chrome。
安装 chromedriver
打开 https://chromedriver.storage.googleapis.com/index.html 选择与你的 Chrome
版本号最对应的那个链接打开然后下载与你操作系统对应的 压缩包进行下载,下载好后解压到一个你比较喜欢的位置注意路径必须为英文。
安装 python3
打开 https://www.python.org/downloads/release 选择最新版 python3 下载,下载后进行安装,安装的时候把能选择的地方都选择上,然后点击 install Now 进行安装。如果觉得我说的不清楚的话请查看 python3 教程 - 安装 进行安装。
selenium 安装
安装好 python3 后打开windows 的命令行终端,如果不知道怎么打开的话请点击屏幕左下角的 windows 图标,然后在搜索这里输入 cmd
然后回车,这样就打开 windows 命令行窗口了。
在命令行窗口内输入 以下命令 安装 selenium
pip install selenium
到这里 selenium 就安装完成了
测试 selenium
在 Windows 下我一般喜欢使用 jupyter 运行 python 代码,不过你也可以使用任何一个你喜欢的 ide ,比如 vscode 等。
然后用你喜欢的 ide 运行以下代码
#! /usr/bin/env python3
# -*- coding: utf-8 -*-
from selenium import webdriver
driver = webdriver.Chrome('D:\driver\chromedriver') # 这里的路径填入刚才解压好的 chromedriver 所在路径
driver.get('https://niconiconi.fun') # 打开我的网站首页
不出意外的话这时会弹出 Chrome 浏览器并打开我网站的首页
基本使用
远程模式
有时候我们并不希望在本地进行浏览器自动化我们可以远程链接它,本次演示在 树莓派下进行理论上适合所有 Linux 发行版。
在桌面环境下运行 cheomedriver 然后就可以使用 selenium 进行链接了。注意地址是允许链接的 ip 地址,不要填类似于 0.0.0.0
这样的网络接口。
比如 我运行的 chromedriver
的 服务器 ip 是 192.168.1.2
,我打算 在 IP 为 192.168.1.3
的 机器运行 selenium。 那么这里就应该填 192.168.1.3
。
启动远程链接
/usr/lib/chromium-browser/chromedriver --whitelisted-ips="192.168.1.3"
然后使用 selenium 进行链接
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
driver = webdriver.Remote(
command_executor='http://192.168.1.3:9515',
desired_capabilities=DesiredCapabilities.CHROME)
driver.get("https://niconiconi.fun")
然后就链接成功了,使用方式和本地使用相同