使用PhantomJS与Selenium Webdriver和Python

Mat*_*ern 10 javascript selenium webdriver phantomjs

我目前正在使用Selenium Webdriver在页面上进行一些验证.Webdriver由PhantomJS驱动.我知道在PhantomJS中,您可以使用如下示例来收听网络:(来自https://github.com/ariya/phantomjs/wiki/Network-Monitoring).

var page = require('webpage').create();
page.onResourceRequested = function (request) {
    console.log('Request ' + JSON.stringify(request, undefined, 4));
};
page.onResourceReceived = function (response) {
    console.log('Receive ' + JSON.stringify(response, undefined, 4));
};
page.open(url);
Run Code Online (Sandbox Code Playgroud)

如何在Webdriver中实现此功能?我可以将函数绑定到DesiredCapabilities吗?

Her*_*ter 0

你想在这里实现什么目标?可以注入javascript。因此,您可以创建一个对象来侦听页面并将其记录到稍后在执行某些操作时获取的对象中。

我会尝试一下,但我不确定 phantomJS 是做什么的。

browser.execute_script("    
var requests= [];
var received = [];
var page = require('webpage').create();
page.onResourceRequested = function (request) {
    requests.push('Request ' + JSON.stringify(request, undefined, 4));
};
page.onResourceReceived = function (response) {
    received.push('Receive ' + JSON.stringify(response, undefined, 4));
};
page.open(url);");
Run Code Online (Sandbox Code Playgroud)

稍后(如果您仍在同一页面上)获取请求:

browser.execute_script("function(){return requests }()");
Run Code Online (Sandbox Code Playgroud)

和收到的连接:

browser.execute_script("function(){return received}");
Run Code Online (Sandbox Code Playgroud)