[Web自动化] Selenium设置相关执行文件路径

10.7 Selenium设置相关执行文件路径

10.7.1 设置驱动文件位置

Selenium在启动浏览器时,需要指定浏览器驱动(如chromedriver、geckodriver等)的位置。设置驱动文件位置的方法主要有以下几种:

  1. 将驱动文件放在系统环境变量中
    • 将浏览器驱动的完整路径添加到系统的PATH环境变量中。这样,Selenium在启动时就可以自动找到驱动文件,而无需在代码中指定路径。
    • 注意:这种方法的好处是代码简洁,但缺点是如果系统中有多个版本的驱动或需要在不同项目中使用不同版本的驱动,可能会带来管理上的不便。
  2. 在代码中指定驱动文件位置
    • 如果不将驱动添加到系统环境变量,可以在Selenium的初始化代码中直接指定驱动文件的路径。这通常通过传递一个包含驱动路径的Service对象或指定executable_path参数来实现(尽管executable_path参数已被弃用,推荐使用Service对象)。
    • 示例代码(使用Service对象):
python 复制代码
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
service = Service(executable_path='/path/to/chromedriver')
driver = webdriver.Chrome(service=service)
  • 注意:请将'/path/to/chromedriver'替换为你的chromedriver驱动文件的实际路径。

10.7.2 设置浏览器程序位置

在使用 Selenium 启动浏览器时,如果浏览器可执行文件不在你的系统路径(PATH)中,你需要指定浏览器的路径。

py 复制代码
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# 指定Chrome浏览器的路径
chrome_binary_path = '/path/to/chrome.exe'
# 创建ChromeOptions对象
options = Options()
options.binary_location = chrome_binary_path
# 创建WebDriver对象时传递ChromeOptions
driver = webdriver.Chrome(options=options)

10.7.3 设置用户目录

Selenium在启动浏览器时,默认会使用一个新的用户数据目录(profile),这意味着它不会加载浏览器中的现有数据(如Cookies、书签等)。如果需要加载特定的用户数据目录,可以通过设置ChromeOptions的user-data-dir参数来实现。

  1. 在代码中设置用户目录位置
    • 通过创建ChromeOptions对象,并使用add_argument方法添加--user-data-dir参数来指定用户数据目录的路径。

示例代码:

python 复制代码
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--user-data-dir=/path/to/your/profile')
driver = webdriver.Chrome(options=options)
  • 注意:请将'/path/to/your/profile'替换为你想要加载的用户数据目录的实际路径。这个路径应该是一个已经存在的目录,Selenium将在这个目录中查找和保存用户数据。

10.7.4 带插件启动

py 复制代码
option = webdriver.ChromeOptions()
option.add_extension('D:\谷歌方案\IE_Tab_for_Chrome-10.5.10.1.crx')  # 自己下载的crx路径
driver = webdriver.Chrome(chrome_options=option)
driver.get("chrome-extension://hehijbfgiekmjfkfjpbkbammjbdenadd/nhc.htm#url=http://10.190.32.54:7001/default/index.jsp")  # 利用浏览器对象打开网页地址
相关推荐
掘金一周5 小时前
你们觉得房贷多少,没有压力 | 沸点周刊 4.30
前端·人工智能·后端
大貔貅喝啤酒5 小时前
接口测试_Postman(详细版)
javascript·测试工具·node.js·自动化·postman
小小码农Come on5 小时前
QML访问子项内容
前端·javascript·html
a1117765 小时前
MonoGS 在 Jetson Orin Nano 上的部署与性能测试
python·开源·torch·cv
偶尔微微一笑5 小时前
智能体四大核心模块揭秘
python
han_5 小时前
一篇看懂国内外主流大模型:GPT、Claude、Gemini、DeepSeek、通义千问有什么区别?
前端·人工智能·llm
一行代码一行诗++5 小时前
注释是什么和注释该怎么写(C语言)
java·前端·javascript
涂兵兵_青石疏影6 小时前
beginPath-vs-save详解
前端
2301_815901976 小时前
SQL如何将多行记录聚合成逗号分隔字符串_GROUP_CONCAT技巧
jvm·数据库·python
西索斯6 小时前
Claude API 报 529 Overloaded 怎么办?3 种方案实测,最后一种最省心
python·claude