如何通过Selenium Webdriver以其他用户身份在Firefox中打开应用网站
用Selenium以其他用户身份启动Firefox并访问目标应用
我来帮你搞定这个问题!你手动通过“Run as different user”能实现需求,但直接用GeckoDriver不行,核心原因是GeckoDriver默认会在当前用户的上下文里启动Firefox,而手动操作是切换了用户运行环境。下面给你两种可行的自动化方案:
方案1:用runas启动带远程调试的Firefox,再用Selenium连接
这个方法是先让Firefox以指定用户身份启动并开启远程调试,再让Selenium控制这个已运行的浏览器实例,步骤如下:
构造
runas命令启动Firefox
打开命令提示符(CMD),输入以下命令(替换成你的实际用户信息和Firefox安装路径):runas /user:DOMAIN\USERNAME "C:\Program Files\Mozilla Firefox\firefox.exe --remote-debugging-port=9222"执行后会弹出凭据窗口,输入该用户的密码,Firefox就会以这个用户身份启动并开启9222端口的远程调试。
用Selenium连接到已运行的Firefox
编写Selenium代码,配置FirefoxOptions来附加到刚才启动的实例:from selenium import webdriver from selenium.webdriver.firefox.options import Options # 配置选项,匹配远程调试端口 firefox_options = Options() firefox_options.add_argument("--remote-debugging-port=9222") # 跳过首次运行和默认浏览器检查 firefox_options.add_argument("--no-first-run") firefox_options.add_argument("--no-default-browser-check") # 连接到已运行的Firefox实例 driver = webdriver.Firefox(options=firefox_options) # 访问目标应用网站 driver.get("https://your-target-app-url.com")
方案2:预存凭据实现半自动化(适合测试环境)
如果不想每次手动输入密码,可以用Windows的cmdkey命令预先存储用户凭据(注意:密码会明文存储,仅适合测试环境):
cmdkey /add:DOMAIN\USERNAME /pass:USER_PASSWORD
之后再执行runas命令时,就不会弹出凭据窗口,直接以指定用户启动Firefox,后续步骤和方案1一致。
注意事项
- 确保指定的用户有权限运行Firefox,并且能访问目标应用网站
- 调整
runas命令中的Firefox路径,和你实际的安装位置一致 - 远程调试端口可以自定义,但要确保端口未被其他程序占用
内容的提问来源于stack exchange,提问作者Nitish Aggarwal
相关产品推荐
相关产品推荐

