2013-07-19 7 views
9

के साथ फैंटॉमजेएस का उपयोग करके मैं वर्तमान में सेलेनियम वेबड्राइवर का उपयोग पृष्ठों पर कुछ सत्यापन करने के लिए कर रहा हूं। वेबड्राइवर फैंटॉमजेएस द्वारा संचालित किया जा रहा है। मुझे पता है कि फैंटॉमजेएस में, आप नीचे दिए गए उदाहरण की तरह उदाहरण का उपयोग कर नेटवर्क सुन सकते हैं: (https://github.com/ariya/phantomjs/wiki/Network-Monitoring से)।सेलेनियम वेबड्राइवर और पायथन

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

मैं इस कार्यक्षमता को वेबड्राइवर के भीतर कैसे प्राप्त कर सकता हूं? क्या मैं वांछित क्षमताओं के लिए एक समारोह बांध सकता हूँ?

+0

यह कैसे एक अजगर सवाल है? – Marcin

+0

[प्रस्तावित समाधान मेरे लिए काम नहीं करते थे, लेकिन यह एक काम करता है (यह driver.execute_script का उपयोग करता है)] (http://stackoverflow.com/a/36427562/1334996) – AlexMe

उत्तर

0

आप यहां क्या हासिल करने की कोशिश कर रहे हैं? जावास्क्रिप्ट इंजेक्ट करना संभव है। तो इसके साथ आप एक ऑब्जेक्ट बना सकते हैं जो पृष्ठ को सुनता है और इसे उस ऑब्जेक्ट में लॉग करता है जिसे आपने बाद में पकड़ लिया था जब आपने कुछ क्रियाएं की थीं।

बीमार इसे आज़माएं लेकिन मुझे यकीन नहीं है कि 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}"); 
संबंधित मुद्दे