2013-07-19 2 views
9

Ich verwende Selenium Webdriver derzeit, um einige Validierung auf Seiten durchzuführen. Der Webdriver wird von PhantomJS gesteuert. Ich weiß, dass Sie in PhantomJS das Netzwerk mit dem folgenden Beispiel anhören können: (von https://github.com/ariya/phantomjs/wiki/Network-Monitoring).Verwenden von PhantomJS mit Selenium Webdriver und 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); 

Wie kann ich diese Funktionalität innerhalb des Webdrivers erreichen? Kann ich eine Funktion an die DesiredCapabilities binden?

+0

Wie ist dies eine Frage Python? – Marcin

+0

[Vorgeschlagene Lösungen funktionierten nicht für mich, aber dieses funktioniert (es verwendet driver.execute_script)] (http://stackoverflow.com/a/36427562/1334996) – AlexMe

Antwort

0

Was versuchen Sie hier zu erreichen? Es ist möglich, Javascript zu injizieren. So könnten Sie ein Objekt erstellen, das auf die Seite hört und dieses in ein Objekt einträgt, das Sie später greifen, wenn Sie einige Aktionen ausführen.

Ich werde es versuchen, aber ich bin mir nicht sicher, was PhantomJS tut.

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

später (wenn Ihr noch auf der gleichen Seite), um die Anträge zu erhalten:

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

und die empfangenen Verbindungen:

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