Java 从WebDriver或RemoteWebDriver使用PhantomJS和GhostDriver进行网络监控
我希望通过WebDriver/RemoteWebDriver使用PhantomJS来监视和测试整个页面加载过程中的网络活动。我已经做到了PhantomJS可以做Chrome或Firefox可以做的一切,加载页面、访问DOM等等 然而,我不知道从这里可以走到哪里才能像我在JavaScript PhantomJS示例中看到的那样访问请求和响应HTTP头。GhostDriver Javadocs似乎没有提及任何相关内容 有人这样做过吗?WebDriver API或状态代码。PhantomJS可能允许您获取它们,但WebDriverAPI不会公开它们。这在项目的一些用户中是一个很好的选择,但它不会改变,而且这个决定必须如此。通过巧妙地使用WebDriver的Java 从WebDriver或RemoteWebDriver使用PhantomJS和GhostDriver进行网络监控,java,automation,webdriver,phantomjs,ghostdriver,Java,Automation,Webdriver,Phantomjs,Ghostdriver,我希望通过WebDriver/RemoteWebDriver使用PhantomJS来监视和测试整个页面加载过程中的网络活动。我已经做到了PhantomJS可以做Chrome或Firefox可以做的一切,加载页面、访问DOM等等 然而,我不知道从这里可以走到哪里才能像我在JavaScript PhantomJS示例中看到的那样访问请求和响应HTTP头。GhostDriver Javadocs似乎没有提及任何相关内容 有人这样做过吗?WebDriver API或状态代码。PhantomJS可能允许您
executeScript()
方法,您可能能够操纵PhantomJS检索信息的能力(如果允许的话),但我真的不知道这是否有效。WebDriver API或状态码。PhantomJS可能允许您获取它们,但WebDriverAPI不会公开它们。这在项目的一些用户中是一个很好的选择,但它不会改变,而且这个决定必须如此。通过巧妙地使用WebDriver的executeScript()
方法,您可能能够操纵PhantomJS检索信息的能力(如果允许的话),但我真的不知道这是否有效。尝试使用。它是无头的,支持检索响应头
功能包括(摘自链接):
HTML、XHTML、XML解析。
协议:HTTP、HTTPS、基本身份验证。
通过字段标签/名称/顺序填写表格。
自动表单置换。
文件下载/上传。保存完整的网页(图像、js、css、,
等等)。表数据提取。
DOM导航、搜索和搜索链接。
已启用正则表达式的查询。HTTP头/cookie操作。
HTTP/HTTPS代理支持。
可定制的缓存和内容处理程序。分页发现。100%
Java(无依赖项)
尝试使用。它是无头的,支持检索响应头
功能包括(摘自链接):
HTML、XHTML、XML解析。
协议:HTTP、HTTPS、基本身份验证。
通过字段标签/名称/顺序填写表格。
自动表单置换。
文件下载/上传。保存完整的网页(图像、js、css、,
等等)。表数据提取。
DOM导航、搜索和搜索链接。
已启用正则表达式的查询。HTTP头/cookie操作。
HTTP/HTTPS代理支持。
可定制的缓存和内容处理程序。分页发现。100%
Java(无依赖项)
基于,我能够在Java和Selenium 3.4中实现这一点
在项目中创建资源文件;称之为netlog.js
:
var page = this;
page.onResourceRequested = function(request) {
console.log('Request ' + JSON.stringify(request, undefined, 4));
};
page.onResourceReceived = function(response) {
console.log('Receive ' + JSON.stringify(response, undefined, 4));
};
然后,从Java代码中,按如下方式启用日志记录:
import org.apache.commons.io.IOUtils;
String script = IOUtils.toString(getClass().getResourceAsStream("/netlog.js"));
((PhantomJSDriver) driver).executePhantomJS(script);
所有日志记录都将转到stderr
还有一些关于.的附加讨论,基于,我能够在Java和Selenium 3.4中实现这一点
在项目中创建资源文件;称之为netlog.js
:
var page = this;
page.onResourceRequested = function(request) {
console.log('Request ' + JSON.stringify(request, undefined, 4));
};
page.onResourceReceived = function(response) {
console.log('Receive ' + JSON.stringify(response, undefined, 4));
};
然后,从Java代码中,按如下方式启用日志记录:
import org.apache.commons.io.IOUtils;
String script = IOUtils.toString(getClass().getResourceAsStream("/netlog.js"));
((PhantomJSDriver) driver).executePhantomJS(script);
所有日志记录都将转到stderr
关于这个问题还有一些额外的讨论