欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > Selenium 包介绍

Selenium 包介绍

2025/2/24 18:27:48 来源:https://blog.csdn.net/PolarisRisingWar/article/details/144026582  浏览:    关键词:Selenium 包介绍

诸神缄默不语-个人CSDN博文目录

Selenium 是一个强大的工具,主要用于自动化 Web 浏览器的操作。它支持多种编程语言(如 Python、Java、C# 等)和主流浏览器(如 Chrome、Firefox、Safari、Edge 等),广泛应用于自动化测试、爬虫开发和浏览器行为模拟。

文章目录

  • Selenium 的主要功能
  • 安装 Selenium
  • Selenium 的核心组件
  • webdriver
    • `webdriver.Chrome()` 对象
      • 参数和高级用法
        • 1. 使用选项配置
          • 示例:启用无头模式(Headless)
        • 2. 指定 ChromeDriver 路径
        • 3. 设置用户代理
        • 4. 设置窗口大小
        • 5. 加载扩展
        • 6. 关闭自动化控制提示
      • 常用方法
        • 1. `get(url)`
        • 2. `find_element(by, value)`
        • 3. `find_elements(by, value)`
        • 4. `execute_script(script, *args)`
        • 5. `save_screenshot(filename)`
        • 6. `quit()`
      • 注意事项
      • 总结
    • `webdriver.get_cookies()` 方法
      • 示例 1:获取所有 Cookies
      • 示例 2:结合 `add_cookie` 使用
      • 示例 3:获取特定 Cookie

Selenium 的主要功能

  1. 浏览器自动化: 打开网页、点击按钮、输入文本、提交表单等。
  2. 跨浏览器支持:支持多种浏览器(需要相应的浏览器驱动程序)。
  3. 动态网页抓取:可以处理 JavaScript 动态加载内容。
  4. 模拟用户操作:模拟键盘输入、鼠标点击、窗口切换等操作。
  5. 扩展测试功能:支持复杂的 UI 测试和页面行为验证。

安装 Selenium

在 Python 环境中,可以使用 pip 进行安装:

pip install selenium

Selenium 的核心组件

  1. WebDriver
    • 提供与浏览器交互的 API。
    • 需要对应的浏览器驱动程序(如 ChromeDriver、GeckoDriver)。
  2. WebElement
    • 表示 HTML 页面中的元素,可以进行点击、输入、获取属性等操作。
  3. ActionChains
    • 支持复杂的用户交互操作(如拖拽、鼠标悬停)。
  4. Waits
    • 提供显式和隐式等待功能,以处理动态加载的页面。

webdriver

from selenium import webdriver

webdriver.Chrome() 对象

在 Selenium 中,webdriver.Chrome() 是用于启动 Chrome 浏览器的 WebDriver。它提供了一个与 Chrome 浏览器交互的接口,可以自动执行浏览器操作,如打开网页、输入数据、点击按钮等。
新版Chrome浏览器下载时自动集成了chromedriver,如果没有下载过需要先下载chromedriver。

参数和高级用法

webdriver.Chrome() 支持多种参数来配置浏览器行为,如无头模式、设置窗口大小等。

1. 使用选项配置

可以通过 webdriver.ChromeOptions 类设置浏览器选项。

示例:启用无头模式(Headless)
from selenium import webdriver# 创建 ChromeOptions 实例
options = webdriver.ChromeOptions()
options.add_argument('--headless')  # 无头模式
options.add_argument('--disable-gpu')  # 禁用 GPU(Linux 系统可能需要)# 创建 WebDriver
driver = webdriver.Chrome(options=options)# 打开网页
driver.get("https://www.example.com")# 获取页面标题
print("页面标题:", driver.title)# 关闭浏览器
driver.quit()
2. 指定 ChromeDriver 路径

如果 ChromeDriver 不在环境变量中,需要手动指定路径。

from selenium import webdriver# 指定 ChromeDriver 的路径
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')# 打开网页
driver.get("https://www.example.com")
driver.quit()
3. 设置用户代理

可以通过添加参数更改用户代理。

from selenium import webdriver# 配置用户代理
options = webdriver.ChromeOptions()
options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36')# 启动浏览器
driver = webdriver.Chrome(options=options)# 打开网页
driver.get("https://www.example.com")
driver.quit()
4. 设置窗口大小

通过参数设置浏览器窗口大小:

from selenium import webdriveroptions = webdriver.ChromeOptions()
options.add_argument('window-size=1200x600')  # 设置窗口大小driver = webdriver.Chrome(options=options)
driver.get("https://www.example.com")
driver.quit()
5. 加载扩展

可以加载 Chrome 扩展程序:

from selenium import webdriveroptions = webdriver.ChromeOptions()
options.add_extension('/path/to/extension.crx')  # 添加扩展driver = webdriver.Chrome(options=options)
driver.get("https://www.example.com")
driver.quit()
6. 关闭自动化控制提示

默认情况下,Selenium 会在浏览器中显示“正在由自动化测试软件控制”的提示,可以通过以下代码关闭:

from selenium import webdriveroptions = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ["enable-automation"])  # 去掉自动化提示
options.add_experimental_option('useAutomationExtension', False)driver = webdriver.Chrome(options=options)
driver.get("https://www.example.com")
driver.quit()

常用方法

1. get(url)

打开指定的 URL。

driver.get("https://www.example.com")
2. find_element(by, value)

查找页面中的元素(如按钮、输入框等)。

from selenium.webdriver.common.by import Byelement = driver.find_element(By.ID, "element-id")
3. find_elements(by, value)

查找多个元素。

elements = driver.find_elements(By.CLASS_NAME, "element-class")
4. execute_script(script, *args)

执行 JavaScript 脚本。

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
5. save_screenshot(filename)

截取当前页面截图。

driver.save_screenshot("screenshot.png")
6. quit()

关闭浏览器并结束 WebDriver 会话。

driver.quit()

注意事项

  1. 版本匹配:ChromeDriver 的版本必须与 Chrome 浏览器的版本一致,否则会报错。
  2. 权限问题:在 Linux 系统上运行时,可能需要为 ChromeDriver 设置可执行权限:
    chmod +x chromedriver
    
  3. 资源清理:使用完 WebDriver 后,务必调用 driver.quit() 释放资源。
  4. 依赖关系:无头模式下,某些系统可能需要额外安装依赖库(如 libgbm-devlibnss3)。

总结

  • webdriver.Chrome() 是 Selenium 与 Chrome 浏览器交互的入口。
  • 通过结合 ChromeOptions 和其他参数,可以灵活配置浏览器行为。
  • 使用时需要确保 ChromeDriver 的版本与 Chrome 浏览器匹配,避免兼容性问题。

webdriver.get_cookies() 方法

在 Selenium 中,get_cookies 是 WebDriver 提供的一个方法,用于获取当前浏览器会话的所有 Cookie 信息。

webdriver.get_cookies()

返回值:

  • 返回一个包含所有 Cookie 信息的 列表
  • 每个 Cookie 是一个字典,字典中包含如下键:
    • name: Cookie 的名称。
    • value: Cookie 的值。
    • domain: Cookie 所属的域。
    • path: Cookie 的有效路径。
    • expiry: Cookie 的过期时间(以时间戳形式返回)。
    • secure: 布尔值,指示是否仅通过 HTTPS 传输。

使用场景:

  1. 查看当前网页的 Cookie
  2. 在会话间共享 Cookie
  3. 调试网站登录状态
  4. 模拟登录后爬取需要权限的页面

示例 1:获取所有 Cookies

from selenium import webdriver# 启动 WebDriver
driver = webdriver.Chrome()# 打开一个网页
driver.get("https://www.baidu.com")# 获取所有 Cookies
cookies = driver.get_cookies()# 打印 Cookies
for cookie in cookies:print(cookie)# 关闭浏览器
driver.quit()

示例 2:结合 add_cookie 使用

使用一个 Cookie 模拟登录后访问页面:

from selenium import webdriver# 启动 WebDriver
driver = webdriver.Chrome()# 打开登录页面
driver.get("https://www.baidu.com")# 手动登录后,获取登录后的 Cookies
login_cookies = driver.get_cookies()
print("登录后的 Cookies:", login_cookies)# 关闭并重新启动浏览器
driver.quit()# 新会话下加载 Cookies
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")  # 必须先加载网站一次
for cookie in login_cookies:driver.add_cookie(cookie)# 刷新页面,验证是否已登录
driver.refresh()# 打印当前页面标题
print("当前页面标题:", driver.title)# 关闭浏览器
driver.quit()

示例 3:获取特定 Cookie

可以通过遍历 Cookies 的列表来获取特定的 Cookie:

from selenium import webdriver# 启动 WebDriver
driver = webdriver.Chrome()# 打开网页
driver.get("https://www.baidu.com")# 获取所有 Cookies
cookies = driver.get_cookies()# 查找特定 Cookie(假设名称为 "session_id")
session_cookie = next((cookie for cookie in cookies if cookie["name"] == "session_id"), None)
if session_cookie:print("找到特定 Cookie:", session_cookie)
else:print("特定 Cookie 不存在")# 关闭浏览器
driver.quit()

注意事项:

  1. 必须加载过页面才能获取 Cookiesget_cookies 方法只能获取当前浏览器会话的 Cookies,调用前需加载相关页面。
  2. HTTPS 限制:如果 Cookie 的 secure 属性为 True,只能通过 HTTPS 请求获取。
  3. 跨域问题:只能获取当前域名下的 Cookies,不能跨域获取。
  4. 模拟登录:使用 Cookie 模拟登录时,需要确保所有必要的 Cookie 都已正确设置。

总结:

  • Selenium 是用于自动化浏览器操作的强大工具,支持复杂的 Web 操作。
  • get_cookies 方法 提供了一种便捷方式来查看和操作浏览器的 Cookies,可用于模拟登录、会话管理和调试等场景。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词