[英]phantomjs click works on one link but not another in the same page
我正在尝试用phantomjs刮一页。 列表必须使用选项过滤,因此涉及一些单击。
这是我的代码:
var page = require('webpage').create();
page.viewportSize = { width: 1024, height: 768 };
page.open('http://jobs.bdjobs.com/jobsearch.asp?fcatId=1&icatId=', function () {
var coords = page.evaluate(function () {
var firstlink = document.querySelectorAll('a.dropdown-toggle')[0];
return {x: firstlink.offsetLeft, y: firstlink.offsetTop};
});
page.sendEvent('click', coords.x + 1, coords.y + 1);
page.onConsoleMessage = function(msg) {console.log(msg);}
page.render('bdjobs.png');
phantom.exit();
});
输出看起来像这样
即使应该切换了“关键字”菜单,也没有。
我确定代码可以正常工作,因为当我单击页面顶部的链接时,可以在屏幕截图中看到它们已被单击。
这是页面链接
我究竟做错了什么?
问题#1使用offsetLeft和offsetTop确定单击的位置-这些属性描述了项目相对于其父项而不是视口的位置。
问题#2在调用page.render之前没有等待足够长的时间使click事件触发
尝试这个 -
var page = require('webpage').create()
page.viewportSize = { width: 1024, height: 768 }
page.open('http://jobs.bdjobs.com/jobsearch.asp?fcatId=1&icatId=', function() {
var coords = page.evaluate(function() {
var rect = document
.querySelector('.dropdown-toggle i')
.getBoundingClientRect()
return { x: rect.left, y: rect.top }
})
page.sendEvent('click', coords.x, coords.y)
page.onConsoleMessage = function(msg) {
console.log(msg)
}
window.setTimeout(function() {
page.render('bdjobs.png')
phantom.exit()
}, 3000)
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.