大 纲

通过 Selenium 和 Python 两个工具实现对浏览器的自动控制,高效的处理一些重复繁琐操作。

Selenium 通过使用 WebDriver 支持市场上所有主流浏览器的自动化。 Webdriver 是一个 API 和协议,它定义了一个语言中立的接口,用于控制 web 浏览器的行为。 每个浏览器都有一个特定的 WebDriver 实现,称为驱动程序。 驱动程序是负责委派给浏览器的组件,并处理与 Selenium 和浏览器之间的通信。

相关站点: Selenium官网 Python官网 PyCharm官网 Chrome驱动 Edge驱动

第1步 安装 Python

前往 Python 官网,选择自己操作系统对应的版本进行下载安装,本文使用的 Python 版本为 Python 3.10。

安装完成后,使用 win+R 组合键,输入 cmd 调出命令提示符,输入 Python,按下回车进行验证,如出现相关版本提示则说明安装成功。

第2步 安装 Selenium 库

使用 PIP 安装

接着进行 Selenium 库的安装,可以使用 pip 安装:

pip install selenium

国内用户如果下载缓慢或安装失败,可使用清华加速源下载。

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple selenium

使用 PyCharm 安装

初学者可使用 PyCharm Community 工具,可在其官网免费下载安装。 打开软件后点击下方「Python Packages」按钮,搜索「Selenium」进行安装。

使用源码安装

也可直接 下载 源码包selenium-x.x.x.tar.gz 使用 setup.py 进行安装。

python setup.py install

第3步 安装浏览器驱动

首先进入浏览器设置界面获取浏览器版本号,进入浏览器的官方的 WebDriver 网站,根据安装的浏览器版本下载驱动文件。

本文以 Windows 操作系统上的 Edge 浏览器为例。进入Edge WebDriver 官网下载驱动包,其中包含可执行文件msedgedriver.exe、LICENSE和README.md,将文件内容解压到如下路径。

C:\WebDriver\bin

然后将 WebDriver 添加到Windows的 PATH 环境变量中。

  1. 右键单击「开始」按钮
  2. 单击「系统」
  3. 单击左侧的「高级系统设置」
  4. 单击底部的「环境变量…」按钮
  5. 在「用户变量」部分中找到以PATH开头的行(PATH全部大写)
  6. 双击「PATH」
  7. 单击「新建…」按钮
  8. 键入C:\WebDriver\bin,完成输入后按「回车」
  9. 在每个窗口中单击「确定」退出

也可在命令提示符中输入如下命令快速添加 PATH 环境变量。

setx PATH "%PATH%;C:\WebDriver\bin"

填加完成后,在命令提示符中输入 msedgedriver.exe 进行验证。

重新控制命令提示符可以使用组合键 Ctrl+C。

第4步 导入相关的库函数

现在运行环境搭建完成,可以开始尝试 Selenium 脚本的编写了。首先需要导入相关的库函数,在 PyCharm 中新建项目,输入如下代码。

# 驱动浏览器
from selenium import webdriver

# 元素定位器 
from selenium.webdriver.common.by import By

# 等待元素加载
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait 

# 键盘按键操作
from selenium.webdriver.common.keys import Keys

第6步 查询器的使用

Selenium 可通过多种方式进行页面元素查询,包括,我们需要通过目标元素的特点选择合适的定位器进行查询。

定位器 描述
CLASS_NAME 定位class属性,不允许使用复合类名
CSS_SELECTOR 定位 CSS 选择器匹配的元素
ID 定位 id 属性
NAME 定位 name 属性
LINK_TEXT 定位link text可视文本
PARTIAL_LINK_TEXT 定位link text可视文本,如果匹配多个元素,则只选择第一个元素。
TAG_NAME 定位 tag 标签名称
XPATH 定位与 XPath 表达式

举个例子,通过值等于 XXXX 的 XPath 表达式进行元素查询,并将地址赋值给变量 item,命令如下。

item = driver.find_element(By.XPATH, value='XXXX')