【问题标题】:BrowserMob Proxy - The remote server returned an error: (404) Not FoundBrowserMob 代理 - 远程服务器返回错误:(404)未找到
【发布时间】:2015-01-05 12:37:05
【问题描述】:
我正在尝试在 C# 中使用 BrowserMob Proxy 和 Selenium。
我在这里尝试过这个解决方案:
http://www.adathedev.co.uk/2012/02/automating-web-performance-stats.html
我的代码如下所示:
Server server = new Server(@"path_to\\browsermob-proxy.bat");
server.Start();
Client client = server.CreateProxy();
client.NewHar("test");
var seleniumProxy = new Proxy { HttpProxy = client.SeleniumProxy };
var profile = new FirefoxProfile();
profile.SetProxyPreferences(seleniumProxy);
IWebDriver driver = new FirefoxDriver(profile);
当我运行测试时,我收到以下错误:
System.Net.WebException:远程服务器返回错误:(404) Not Found。
在第三行失败。
关于如何使它工作的任何建议?
【问题讨论】:
标签:
c#
selenium
selenium-webdriver
browsermob
【解决方案1】:
如果您可以发布更详细的堆栈跟踪信息,以及您尝试连接的远程主机,那将会很有用。与此同时,您可以尝试以下几件事:
- 检查您请求的地址。您似乎收到了 404 - 您可以通过没有代理的浏览器访问它吗?
- 确保 browsermob-proxy.bat 安装在第 1 行的路径中(它真的位于名为“path_to”的工作目录的子目录中吗?)
- 检查您在临时目录中的写入权限,在 Windows 上为 %TEMP% 或 %TMP%。 BMP 在那里写入临时文件。
- 获取最新的源代码并构建 .bat 文件。说明位于底部的browsermob-proxy github page(在从源代码创建批处理文件下)。
希望有帮助!
【解决方案2】:
这很可能是因为您的 Jetty 服务实际上并未运行,您是否从 BrowserMob 批处理文件中收到一条消息说它无法运行?就我而言,这是一种端口(默认设置为 8080)但我在该端口上监听的其他东西的情况。要解决此问题,您可以传递一个可选的端口号。
var server = new Server(@"C:\path\to\bin\browsermob-proxy.bat", 9090);
【解决方案3】:
我在 python 上遇到了同样的问题。当我尝试获取 localhost:8080 的内容时,出现 404 错误。原来我的其他应用程序正在使用相同的 8080 端口。所以我发现 PID 在 cmd 中输入:netstat -o -n -a | findstr :8080。然后我用这个 PID 终止了进程,browsermob 给了我很好的 HAR。