大 纲

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

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.exeLICENSEREADME.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')