2013-07-19 18 views
9

Aktualnie używam Selenium Webdriver, aby dokonać jakiejś weryfikacji na stronach. Webdriver jest sterowany przez PhantomJS. Wiem, że w PhantomJS możesz słuchać sieci używając przykładu podobnego do poniższego: (od https://github.com/ariya/phantomjs/wiki/Network-Monitoring).Używanie PhantomJS z Selenium Webdriver i 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); 

Jak mogę uzyskać tę funkcjonalność w oprogramowaniu Webdriver? Czy mogę powiązać funkcję z DesiredCapabilities?

+0

Jak to kwestia python? – Marcin

+0

[Proponowane rozwiązania nie działają dla mnie, ale ten działa (wykorzystuje driver.execute_script)] (http://stackoverflow.com/a/36427562/1334996) – AlexMe

Odpowiedz

0

Co próbujesz osiągnąć tutaj? Możliwe jest wstrzyknięcie javascript. Dzięki temu można utworzyć obiekt, który słucha strony i loguje ją do obiektu, który można pobrać później, gdy wykonałeś pewne czynności.

Dobrze, ale nie jestem pewien, co robi 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);"); 

później (jeśli wciąż na tej samej stronie), aby uzyskać wnioski:

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

i odebranych połączeń:

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