2013-07-19 73 views
9

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

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); 

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

+0

如何,这是一个Python的问题吗? – Marcin

+0

[建议的解决方案对我来说不起作用,但是这个可以工作(它使用driver.execute_script)](http://stackoverflow.com/a/36427562/1334996) – AlexMe

回答

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);"); 

以后(如果你在同一页面上仍然)来获取请求:

browser.execute_script("function(){return requests }()"); 

和接收到的连接:

browser.execute_script("function(){return received}"); 
相关问题