Phantomjs:包含jquery来隐藏或点击元素
phantomjs: include jquery to hide or click element
我试图从以前隐藏的cookie策略的网页截图。比如:
var webPage = require('webpage');
var page = webPage.create();
page.viewportSize = { width: 375, height: 667 };
page.settings.userAgent = 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_0_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12A366 Safari/600.1.4';
page.onConsoleMessage = function (msg, line, source) {
console.log('console> ' + msg);
};
var fs = require('fs');
page.open('https://www.twitter.com/mmarkmiller/status/714525180668850176', function(status) {
console.log('Status: ' + status);
page.includeJs('https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js', function() {
(page.evaluate(function() {
console.log('Evaluating!');
// jQuery is loaded, now manipulate the DOM
var $button = $('div[jsnamespace="EuCookieSheet"]');
$button.hide();
}));
});
fs.write('test.html', page.content, 'w');
page.render('teto.png');
phantom.exit();
});
但是我没有在控制台日志中显示"正在评估!"文本,并且呈现的html和png文件都有可见的cookie策略。我看到jquery包含在保存的html正文的末尾,但似乎页面。计算部分不工作
我还能错过什么?
谢谢!
Jquery已经存在,打开浏览器控制台并执行$
。因此,您的回调page.includeJs
将无法工作。你已经可以在这里使用jquery了,在evaluate context里面。
还有:没有像div[jsnamespace="EuCookieSheet"]
这样的css选择器,你可以在纯js上做你想做的:
function click(sel){var event=document.createEvent('MouseEvents');event.initMouseEvent('click',1,1,window,1,0,0,0,0,0,0,0,0,0,null);document.querySelector(sel).dispatchEvent(event);}
var webPage = require('webpage');
var page = webPage.create();
page.viewportSize = { width: 375, height: 667 };
page.settings.userAgent = 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_0_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12A366 Safari/600.1.4';
page.onConsoleMessage = function (msg, line, source) {
console.log('console> ' + msg);
};
var fs = require('fs');
page.open('https://www.twitter.com/mmarkmiller/status/714525180668850176', function(status) {
console.log('Status: ' + status);
page.evaluate(function(click){
console.log('Evaluating!');
document.querySelector('div[jsnamespace="EuCookieSheet"]').style="display: none;"
},click);
fs.write('test.html', page.content, 'w');
page.render('teto.png');
phantom.exit();
})
相关文章:
- 切换一个元素并将其余元素隐藏在同一包装类下
- CSS 动画在元素隐藏时暂停
- 检查元素是否可见,父元素隐藏在DOM中
- 粘性导航元素 - 隐藏然后显示
- show() 在元素隐藏时不起作用
- 通过可见性隐藏和显示元素:隐藏/可见
- 如何从检查页面元素隐藏Blogger中的javascript代码
- 基于页面元素隐藏部分html代码
- 使用jQuery和select元素隐藏动态类
- Jquery Div元素隐藏
- 当指针在父元素上时,Boostrap工具提示会在父元素隐藏之前触发悬停事件
- 聚焦元素隐藏在固定菜单后面
- 将jQuery中的元素隐藏在表中
- 元素.隐藏变量可移植性
- 如何使一个元素隐藏在向下滚动的wordpress
- 当父元素隐藏时,如何使用jquery show()
- 高度:自动计算错误,如果元素隐藏时dom加载,然后显示
- Javascript元素隐藏不起作用
- 使元素隐藏后直接显示完成jquery
- HTML表单元素隐藏的onload javascript