Jac*_*ekM 26 java proxy selenium webdriver har
我正在使用Selenium2/WebDriver来测试我的Web应用程序.所有测试都是用Java编写的,并与Maven一起运行.
在使用webdriver打开页面时,我想捕获页面发出的所有请求(图像,js和css文件等).我使用这些数据主要有两个原因
根据项目,我使用Firebug和Netexport或Browsermob代理.在这两种情况下,我都可以轻松获取HAR(Html ARchive)文件,解析它并提取我想要的数据.
问题在于:我对这些解决方案都不满意.当页面包含加载太长时间的视频时,我特别遇到获取HAR文件的问题.我正在寻找更稳定的东西.
所以,问题是:
Browsermob还有其他选择吗?我知道FiddlerCore,但它是一个.NET库,我的测试是用Java编写的.我也听说过Ajax DynaTrace,我知道有一些方法可以将它与Selenium集成,但我找到的文档是Selenium-RC而不是WebDriver.
有没有办法将DynaTrace与WebDriver集成或使用FiddlerCore与Java?
有没有其他方法可以实现我提到的目标?我正在寻找一个可以从我的代码中轻松控制的代理.将数据导出到HAR将是一个很好的选择.
小智 5
有一个替代firefox ver 42+,有一个名为Firefox HarExport的插件
File harExportApi = new File(System.getProperty("user.dir")
+ "/src/main/resources/firebug/harexporttrigger-0.5.0-beta.7.xpi");
netExportProfile.addExtension(harExportApi);
netExportProfile.setPreference("extensions.netmonitor.har.enableAutomation", true);
netExportProfile.setPreference("extensions.netmonitor.har.contentAPIToken", "test");
netExportProfile.setPreference("extensions.netmonitor.har.autoConnect", true);
cap.setCapability(FirefoxDriver.PROFILE, netExportProfile);
Run Code Online (Sandbox Code Playgroud)
并运行以下脚本将为我们提供所有请求响应
String getHarLogScript = "var options = {\n" +
" token: \"test\",\n" +
" getData: true,\n" +
" title: \"my custom title\",\n" +
" jsonp: false,\n" +
" };\n" +
"\n" +
" HAR.triggerExport(options).then(result => {\n" +
" var har = JSON.parse(result.data);\n" +
"\n" +
" // Use performance.timing to provide onContentLoad\n" +
" +
" +
" var t = performance.timing;\n" +
" var pageTimings = har.log.pages[0].pageTimings;\n" +
" pageTimings.onContentLoad = t.domContentLoadedEventStart - t.navigationStart;\n" +
" pageTimings.onLoad = t.loadEventStart - t.navigationStart;\n" +
"\n" +
" window.HarEntries=har.log.entries\n" +
"\n" +
" console.log(\"HAR log (\" + result.data.length + \") \", har.log);\n" +
" }, err => {\n" +
" console.error(err);\n" +
" });"
LOG.info("Loading HAR log entries object into browser HarEntries object");
SeleniumUtils.executeScript(driver, getHarLogScript);
harEntries = ((List<Object>) SeleniumUtils.executeScript(driver, "return window.HarEntries"));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46457 次 |
| 最近记录: |