将 PhantomJS 与 Selenium Webdriver 和 Python 一起使用

Posted

技术标签:

【中文标题】将 PhantomJS 与 Selenium Webdriver 和 Python 一起使用【英文标题】:Using PhantomJS with Selenium Webdriver and Python 【发布时间】:2013-07-19 07:06:30 【问题描述】:

我目前正在使用 Selenium Webdriver 对页面进行一些验证。 Webdriver 由 PhantomJS 驱动。我知道在 PhantomJS 中,您可以使用下面的示例收听网络:(来自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);

如何在 Webdriver 中实现此功能?我可以将函数绑定到 DesiredCapabilities 吗?

【问题讨论】:

这是一个python问题吗? Proposed solutions didn't work for me, but this one works (it uses driver.execute_script) 【参考方案1】:

您想在这里实现什么目标?可以注入javascript。因此,您可以创建一个侦听页面的对象并将其记录到您稍后在执行某些操作时抓取的对象中。

我会试一试,但我不确定 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");

【讨论】:

以上是关于将 PhantomJS 与 Selenium Webdriver 和 Python 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

Python爬虫(二十一)_Selenium与PhantomJS

爬虫——Selenium与PhantomJS

Python爬虫_Selenium与PhantomJS

Python爬虫:Selenium与PhantomJs学习

使用 Selenium 和 PhantomJS 将 javascript polyfill 注入页面

爬虫之动态HTML处理(Selenium与PhantomJS )网站模拟登录