14-Selenium 的使用

  • 阅读: 931
  • 更新: 2022-06-11

Selenium 是一系列工具和库的综合项目,这些工具和库支持 web 浏览器的自动化。
WebDriver 使用浏览器供应商提供的浏览器自动化 API 来控制浏览器和运行测试,这就像真正的用户正在操作浏览器一样。
在 python 语境中所聊到的 Selenium 大概率是指 WebDriver 的使用。
Selenium 官网地址:https://www.selenium.dev/zh-cn/documentation/overview/
Selenium-Python 文档地址:https://selenium-python.readthedocs.io/index.html
Selenium-Python 中文文档地址(旧版未更新,仅作参考):https://selenium-python-zh.readthedocs.io/en/latest/getting-started.html

1. 安装

1
pip install selenium

2. 以 Firefox 浏览器为例

请先确保系统安装了 Firefox 浏览器

2.1 下载 geckodriver

下载地址:https://github.com/mozilla/geckodriver/releases/
以 windows 系统为例:

  1. 下载 geckodriver-{version}-win64.zip 文件
  2. 解压后得到 geckodriver.exe 文件
  3. 将此 geckodriver.exe 文件加入到环境变量中(可选操作)

2.2 代码示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
from selenium import webdriver
from selenium.webdriver.common.by import By


driver = webdriver.Firefox()
driver.get('https://python-abc.xyz/code/5127/')

elem = driver.find_element(By.XPATH, '/html/body/div[1]/div[1]/div[2]/p[2]/a')
url = elem.get_attribute('href')
print(url)
elem.click()

关于 executable_path 参数:

1
2
3
4
5
6
# geckodriver.exe 加入到了环境变量就可以直接这样使用
# driver = webdriver.Firefox()

# 如果没有加入到环境变量,就要指定 executable_path 参数
# driver = webdriver.Firefox(
#     executable_path=r'path\to\geckodriver.exe')

3. 语法介绍

3.1 查找元素

https://selenium-python.readthedocs.io/locating-elements.html

注意:新版的已经不推荐使用 find_element_by_* 方式了。

方法 含义 示例
find_element() 查找单个元素 driver.find_element('tag name', 'h1')
find_elements() 查找多个元素 driver.find_elements('xpath', '//*[@id="convertd"]/tr/td[1]')

第一个元素为查找的方式,取值可为:

通过 By 属性 直接通过字符串 含义
By.ID "id" 通过 ID 查找元素
By.NAME "name" 通过 Name 查找元素
By.XPATH "xpath" 通过 XPath 查找元素
xpath 地址可以通过浏览器按 F12 检查元素之后复制得来
By.LINK_TEXT "link text" 通过链接文本获取超链接
By.PARTIAL_LINK_TEXT "partial link text" 同上,但可部分匹配
By.TAG_NAME "tag name" 通过标签名查找元素
By.CLASS_NAME "class name" 通过 Class name 定位元素
By.CSS_SELECTOR "css selector" 通过 CSS 选择器查找元素

By 需要导入:

1
from selenium.webdriver.common.by import By

3.2 driver 的方法和属性

https://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.remote.webdriver

方法/属性 含义
get(url: str) → None 加载网页
close() → None 关闭当前窗口
find_element(by='id', value=None) 查找给定 By 策略和定位器的元素
find_elements(by='id', value=None) 查找给定 By 策略和定位器的所有元素
execute_script(script, *args) 在当前窗口/框架中同步执行 JavaScript 脚本代码
set_window_size(width, height, windowHandle='current') → dict 设置当前窗口的宽度和高度

还有获取 cookie、窗口大小、截图等方法,这里就不一一列举了,可自行查看文档

3.3 页面元素的方法和属性

https://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.remote.webelement

方法/属性 含义
clear() → None 清除文本
click() → None 单击元素
find_element(by='id', value=None) 查找给定 By 策略和定位器的元素
find_elements(by='id', value=None) 查找给定 By 策略和定位器的所有元素
get_attribute(name) → str 获取元素的给定属性
send_keys(*value) → None 模拟输入
text 元素的文本

还有其它一些属性与方法,这里就不一一列举了,可自行查看文档


=== 全文完 ===


欢迎加入QQ群:855013471

京公网安备 11011302003970号 京ICP备2022012301号-1