【发布时间】:2017-07-19 15:12:27
【问题描述】:
我使用 BrowserStack 和 Selenium-webdriver 在不同类型的设备和浏览器上运行测试。所以实际上测试是由 RemoteWebDriver 运行的。
我知道可以使用BrowserMobProxy 在 Selenium 测试中捕获网络,但据我所知,只有在本地机器上运行测试时它才有效。
有没有办法在交叉运行测试时捕获网络?像 BrowserStack 这样的平台基础?
更新
按照我的建议,我设法使用独立的 BrowserMobProxy 和独立的本地 BrowserStack 捕获了 har 文件中的网络(来自链接“localhost:8080/proxy/8081/har”)。
我尝试通过代码自动执行相同的操作:
BrowserMobProxy proxy = new BrowserMobProxyServer();
proxy.start(8080);
System.out.println("Proxy port: " + port);
System.setProperty("java.net.useSystemProxies", "true");
System.setProperty("http.proxyHost", "127.0.0.1");
System.setProperty("http.proxyPort", "8080");
System.setProperty("https.proxyHost", "127.0.0.1");
System.setProperty("https.proxyPort", "8080");
Local l = new Local();
Map<String, String> options = new HashMap<String, String>();
options.put("key", accessKey);
options.put("forcelocal", "true");`
//when I uncomment it i get an exception:
//com.browserstack.local.LocalException: Could not connect to www.browserstack.com!
// options.put("forceproxy", "true");
// options.put("proxyHost", "localhost");
// options.put("proxyPort", "8080");
l.start(options);
}
Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxy);
capabilities.setCapability(CapabilityType.PROXY, seleniumProxy);
proxy.enableHarCaptureTypes(CaptureType.REQUEST_CONTENT, CaptureType.RESPONSE_CONTENT);
driver = new RemoteWebDriver(new URL("http://"+username+":"+accessKey+"@"+config.get("server")+"/wd/hub"), capabilities);'
proxy.newHar("testHar.com");
driver.get(testUrl);
Thread.sleep(15000);
Har har = proxy.getHar();
FileOutputStream fos = new FileOutputStream("C:\\LoadingPage\\network\\testHar.har");
har.writeTo(fos);
与 url 的连接正常,我可以看到它并制作屏幕截图。 但!在 har 文件中,我只看到对“hub-cloud.browserstack.com/wd/hub/...”的请求,而不是来自页面本身的请求。
如何从代码中获取正确的 har? 代码中有什么不正确的地方?
【问题讨论】:
-
您希望捕获什么样的流量以及想要获得什么样的信息?
-
@Mikhail 首先,我需要检查页面是否在一段时间后开始向确定的 url(GET 请求)发送请求(我们在页面内有一个视频播放器,视频开始后,它会发送请求到我们的统计服务器,所以我们可以分析播放视频的百分比)。请求url示例:stats-...com/?pid=....&atype=0&cvprogress=10 其次,点击按钮后,我还需要检查统计请求是否发送正确。
标签: java selenium-webdriver browserstack browsermob