2013-07-19 24 views
9

Attualmente sto utilizzando Selenium Webdriver per eseguire alcune convalide sulle pagine. Il Webdriver è guidato da PhantomJS. So che in PhantomJS è possibile ascoltare la rete utilizzando l'esempio come quello riportato di seguito: (da https://github.com/ariya/phantomjs/wiki/Network-Monitoring).Utilizzo di PhantomJS con Selenium Webdriver e Python

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

Come posso ottenere questa funzionalità all'interno del Webdriver? Posso associare una funzione a DesiredCapabilities?

+0

Come è una domanda di pitone? – Marcin

+0

[Le soluzioni proposte non hanno funzionato per me, ma questo funziona (utilizza driver.execute_script)] (http://stackoverflow.com/a/36427562/1334996) – AlexMe

risposta

0

Cosa stai cercando di ottenere qui? È possibile iniettare javascript. In questo modo è possibile creare un oggetto che ascolta la pagina e registrarlo in un oggetto che si riprende in seguito quando si eseguono alcune azioni.

Ill provarlo ma non sono sicuro di cosa faccia il fantasma.

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

Più tardi (se il vostro ancora sulla stessa pagina) per ottenere le richieste:

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

e le connessioni ricevute:

browser.execute_script("function(){return received}"); 
Problemi correlati