在旧版本的Splinter/Selenium中,据说这是不可能的。几年后,这个答案声称使用 JavaScript 是可能的,但这段代码对我不起作用(我可能只是未能将其转换为 Python(。这个答案关闭浏览器,然后重新打开它,我需要窗口/浏览器保持打开状态。
使用像 FoxyProxy 这样的插件,即时更改代理非常容易,但我认为 Selenium 不能与插件交互,因为它们是页面元素?
由于Splinter被设计为Selenium的不那么冗长的包装器,如果有一个简单的方法可以做到这一点,那就太棒了。话虽如此,任何仅具有此功能的黑客都将不胜感激。
你需要像下面这样使用它
browser.visit("about:config")
script = """
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefBranch);
prefs.setIntPref("network.proxy.type", 1);
prefs.setCharPref("network.proxy.http", "{0}");
prefs.setIntPref("network.proxy.http_port", "{1}");
prefs.setCharPref("network.proxy.ssl", "{0}");
prefs.setIntPref("network.proxy.ssl_port", "{1}");
prefs.setCharPref("network.proxy.ftp", "{0}");
prefs.setIntPref("network.proxy.ftp_port", "{1}");
"""
browser.execute_script(script.format("ProxyIP", "PORT"))
PS:归功于Python Selenium Webdriver - 即时更改代理设置