Python中如何用Selenium+Chrome控制打开浏览器窗口的数量?
python 软件用的是 selenium+谷歌浏览器-想控制打开浏览器窗口的数量,想改成单窗口,单进程,希望能压缩到 512m 虚拟机能够运行的程度并能打包正常运行,会做接单的联系我,不知道怎么修改,Python中如何用Selenium+Chrome控制打开浏览器窗口的数量?
9 回复
哎哎哎我我我我…不要小看我国人口基数,直接留 QQ 会爆掉的
用Selenium的ChromeOptions可以精确控制浏览器窗口数量。核心是复用已有的Chrome实例,而不是每次都开新窗口。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# 方法1:复用浏览器实例(推荐)
def open_new_tab_in_existing_browser():
chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
# 连接到已打开的Chrome实例
driver = webdriver.Chrome(options=chrome_options)
# 打开新标签页
driver.execute_script("window.open('about:blank', '_blank');")
# 切换到新标签页
driver.switch_to.window(driver.window_handles[-1])
driver.get("https://www.example.com")
return driver
# 方法2:直接控制窗口数量
def control_window_count(max_windows=3):
driver = webdriver.Chrome()
driver.get("https://www.example.com")
# 获取当前窗口数
current_windows = len(driver.window_handles)
# 如果窗口数少于最大值,打开新窗口
if current_windows < max_windows:
driver.execute_script("window.open('');")
driver.switch_to.window(driver.window_handles[-1])
driver.get("https://www.example2.com")
# 关闭多余窗口
while len(driver.window_handles) > max_windows:
driver.switch_to.window(driver.window_handles[-1])
driver.close()
driver.switch_to.window(driver.window_handles[0])
return driver
# 使用示例
if __name__ == "__main__":
# 先手动打开Chrome(带远程调试):
# chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\ChromeProfile"
# 然后运行
driver = open_new_tab_in_existing_browser()
# 或者直接控制窗口数量
driver2 = control_window_count(max_windows=2)
关键点:
- 用
debuggerAddress连接已有Chrome实例,避免开新窗口 window_handles列表管理所有窗口句柄execute_script("window.open('')")开新标签页switch_to.window()在窗口间切换close()关闭当前窗口
一句话建议: 复用浏览器实例比控制窗口数更高效。
d2FuZ2NoZW54aWFvY29vbEAxMjYuY29tCg==
我还真希望爆掉 技术太少了
这活给个报价呗
建议 lz 百度一下,关键词 selenium,python
自己学到知识还省钱
如果想省内存的话直接用那些无 gui 浏览器啊~~还能放 linux 上, 很稳
用 chrome headless 可以节约内存,selenium 控制只保持一个 session 就好了。 微信同名

