2013-07-19 21 views
9

Tôi hiện đang sử dụng Trình quản trị trang web Selenium để thực hiện xác thực trên các trang. Webdriver đang được điều khiển bởi PhantomJS. Tôi biết rằng trong PhantomJS, bạn có thể nghe mạng bằng cách sử dụng ví dụ như dưới đây: (từ https://github.com/ariya/phantomjs/wiki/Network-Monitoring).Sử dụng PhantomJS với Selenium Webdriver và 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); 

Làm cách nào để có thể đạt được chức năng này trong Trình quản lý trang web? Tôi có thể liên kết một hàm với DesiredCapabilities không?

+0

Làm thế nào đây là một câu hỏi trăn? – Marcin

+0

[Các giải pháp được đề xuất không phù hợp với tôi, nhưng giải pháp này hoạt động (nó sử dụng driver.execute_script)] (http://stackoverflow.com/a/36427562/1334996) – AlexMe

Trả lời

0

Bạn đang cố gắng đạt được điều gì ở đây? Có thể tiêm javascript. Vì vậy, với điều đó bạn có thể tạo một đối tượng lắng nghe trang và ghi nhật ký này vào một đối tượng mà bạn lấy sau này khi bạn thực hiện một số hành động.

Hãy thử nhưng tôi không chắc chắn những gì phantomJS thực hiện.

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

Sau đó (nếu vẫn còn bạn trên cùng một trang) để có được các yêu cầu:

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

và các kết nối nhận:

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