Selenium:browsermob 可以在 RemoteWebDriver 上运行吗?
Posted
技术标签:
【中文标题】Selenium:browsermob 可以在 RemoteWebDriver 上运行吗?【英文标题】:Selenium: does browsermob can work on RemoteWebDriver? 【发布时间】:2012-02-01 12:07:05 【问题描述】:我正在尝试使用 browsermob 来处理 http 请求,但我发现它似乎无法在远程模式下工作,有人对此有任何想法吗?感激不尽!
在本地运行良好 WebDriver driver = new FirefoxDriver(capabilities)
但实际上在我们的工作环境中,我们总是在远程服务器上运行案例,如下所示: WebDriver driver = new RemoteWebDriver(new URL("http://d-sjc-00517444.corp.com:4444/wd/hub"),capability);
然后firefox无法打开页面说:
代理服务器拒绝连接 Firefox 被配置为使用拒绝连接的代理服务器。 检查代理设置以确保它们是正确的。 请联系您的网络管理员以确保代理服务器正常工作。
【问题讨论】:
“不在远程模式下工作”是什么意思。你有详细信息吗? 你在做什么,你是怎么做的? 【参考方案1】:我猜你正在使用Selenium Grid
。
您必须在您的网格的HUB
机器上启动Browsermob Proxy API
。
像这样,您可以执行this 页面上描述的所有必需的REST API
调用。
【讨论】:
【参考方案2】:简单猜测:
您的应用程序可能位于防火墙后面,因此如果您通过 webdriver 对其进行测试,则您在 Intranet 内部,如果您远程执行此操作,您可能会遇到无法在 Internet 之外找到该应用程序的问题
你在初始化 ScreenShotRemoteWebDriver 时做了一些事情
但没有细节,几乎不可能提供任何解决方案
【讨论】:
【参考方案3】:我猜你的Selenium Grid
正在http://d-sjc-00517444.corp.com:4444
上运行,但你的Java 客户端正在另一台机器上运行。
我猜你的代码在 WebDriver 上设置代理是这样的:
capabilities.setCapability(CapabilityType.PROXY, proxy);
这将导致浏览器将所有请求转发到在浏览器机器上运行的代理,而不是您的 Java 客户端机器。
在运行 Selenium 的机器上
启动代理服务器(在运行 Selenium 的机器上)
sh browsermob-proxy -port 9090
启动代理
curl -X POST http://localhost:9090/proxy
"port":9091
【讨论】:
以上是关于Selenium:browsermob 可以在 RemoteWebDriver 上运行吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Python 上使用 selenium webdriver 和 browsermob 代理捕获网络流量?
无法使用带有 BrowserMob-Proxy 的 Python Selenium 脚本捕获 HAR
由于 SSL 证书使用 Selenium Webdriver 和 BrowserMob 代理来捕获 har 文件,因此无法加载资源