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 文件,因此无法加载资源

BrowserMob proxy

如何在 webdriver 中捕获页面发出的所有请求? Browsermob有啥替代品吗?

Selenium通过设置代理实现抓取HTTPS请求