如何使用Python版Selenium操作已打开的Firefox或Chrome浏览器窗口
Selenium复用已打开浏览器实现重复搜索方案(Chrome优先,操作更简单)
核心逻辑是给浏览器开启远程调试端口,Selenium直接连接已启动的浏览器实例,不需要重新启动浏览器、重走登录流程。
1. 启动带调试端口的Chrome
首先找到Chrome安装路径,在终端/命令行执行启动命令,开启9222调试端口,同时指定独立的用户配置目录(避免和你日常使用的Chrome配置冲突):
- Windows系统命令:
"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --user-data-dir="C:\selenium_chrome_temp" - Mac系统命令:
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --user-data-dir="/tmp/selenium_chrome_temp" - Linux系统命令:
google-chrome --remote-debugging-port=9222 --user-data-dir="/tmp/selenium_chrome_temp"
执行命令后会弹出新的Chrome窗口,全程不要关闭这个命令行窗口,也不要关闭弹出的Chrome,后续所有操作都在这个窗口里执行。你可以第一次先手动/运行一次初始程序走完登录流程,后续不用再登录。
2. 安装依赖库
运行命令安装所需依赖,自动适配Chrome驱动版本:pip install selenium webdriver-manager
3. 复用浏览器执行搜索的代码示例
代码支持从命令行传入搜索参数,直接在已打开的Chrome中执行操作:
from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import sys # 读取传入的搜索参数,示例为从命令行第一个参数获取,你也可以改成从配置文件、接口等位置读取 search_keyword = sys.argv[1] if len(sys.argv) > 1 else "默认搜索关键词" # 配置Selenium连接已启动的Chrome chrome_opt = Options() chrome_opt.add_experimental_option("debuggerAddress", "127.0.0.1:9222") # 初始化驱动,这一步不会新开浏览器,直接关联之前打开的Chrome窗口 driver = webdriver.Chrome(options=chrome_opt) # 以下替换为你自己的搜索逻辑,和你之前写的操作代码完全一致 # 示例为百度搜索,你可以改成自己的目标网站定位逻辑 driver.get("https://www.baidu.com") input_box = driver.find_element(By.ID, "kw") input_box.clear() input_box.send_keys(search_keyword) input_box.send_keys(Keys.ENTER) # 不要执行 driver.quit() ,执行完代码浏览器会保持打开,等待下一次任务
4. 运行方式
每次要执行新搜索,直接在命令行传入参数运行代码即可,比如:python your_script.py 新的搜索词
可选:Firefox适配方案
逻辑和Chrome完全一致,仅修改两处即可:
- 启动Firefox时加调试参数:
firefox --remote-debugging-port=9222 - 代码中替换为Firefox的配置:
from selenium.webdriver.firefox.options import Options firefox_opt = Options() firefox_opt.debugger_address = "127.0.0.1:9222" driver = webdriver.Firefox(options=firefox_opt)
内容的提问来源于stack exchange,提问作者cbasito
相关产品推荐
相关产品推荐

