通过 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
环境变量中。
- 右键单击「开始」按钮
- 单击「系统」
- 单击左侧的「高级系统设置」
- 单击底部的「环境变量…」按钮
- 在「用户变量」部分中找到以PATH开头的行(PATH全部大写)
- 双击「PATH」
- 单击「新建…」按钮
- 键入
C:\WebDriver\bin
,完成输入后按「回车」 - 在每个窗口中单击「确定」退出
也可在命令提示符中输入如下命令快速添加 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')