在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网络驱动程序-动态更改代理设置
问题内容: 我在以下代码中: 我想打印用户代理HTTP标头,并可能对其进行更改。可能吗? 问题答案: Selenium中无法读取请求或响应头。您可以通过指示浏览器通过记录此类信息的代理进行连接来实现。 在Firefox中设置用户代理 更改Firefox用户代理的通常方法是在Firefox配置文件中设置变量。请注意,这与硒无关。 您可以指示Selenium使用与默认配置文件不同的配置文件,如下所示:
我正在使用Selenium WebDrive,在Chrome浏览器中使用C#进行自动化。我需要检查我的网页是否被阻挡在某些地区(一些ip范围)。所以我必须在我的Chrome浏览器中设置一个代理。我尝试了下面的代码。代理正在设置,但我得到一个错误。有人能帮我吗? 运行此代码时,我在Chrome浏览器中收到以下消息:我试图启用代理选项,但“更改代理设置”选项被禁用。 *无法连接到代理服务器 代理服务器
我目前正在成功地使用下面的代码将代理与Selenium webdriver一起使用。不幸的是,我似乎无法让它在不重新启动整个浏览器的情况下更改代理设置。我曾希望简单地更新代理设置,就像我在开始设置代理时所做的那样,可以更改代理,但它似乎不起作用。在此问题上的任何帮助都将不胜感激。
问题内容: 我使用Selenium 2.35.0并配置代理设置,例如: 当我需要更改代理设置时,我会强制重新启动Webdriver并指定其他“ proxyStr”。 如何在不重新启动Webdriver的情况下实现此更改? 问题答案: 为任何给定的驱动程序设置代理时,仅在创建WebDriver会话时设置代理;它不能在运行时更改。即使您具有创建的会话的功能,也将无法更改它。因此,答案是,不,如果要使用
我使用Selenium 2.35.0并配置代理设置,如: 当我需要更改代理设置时,我强制重新启动webdriver并指定其他“proxyStr”。 我如何能达到这一变化没有WebDrive重启?
我正在尝试使用Python Splinter Selenium PhantomJS进行基本测试,但我无法启动phantomjs浏览器。(Chrome 我得到一个错误: 此外,当我跑步时: 我基本上得到了同样的错误。 看起来PhantomJS正在使用远程驱动程序连接到远程服务器,但splinter没有启动selenium(?)PhantomJS要连接到的服务器。我不介意进入splinter(?)的源