繁体   English   中英

phantomjs click适用于一个链接,但不适用于同一页面中的另一个链接

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM