2017-07-23 27 views
1

我想湊一個頁面phantomjs作品。清單必須與選項進行過濾,所以一些點擊參與。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(); 


}); 

輸出類似於 this

即使關鍵詞菜單應該已經觸發,事實並非如此。

我敢肯定,代碼工作,因爲當我點擊鏈接頁面的頂部,我可以在他們已經被點擊截圖中看到。

這裏的page link

我在做什麼錯?

回答

0

問題1使用offsetLeft & offsetTop確定點擊的位置 - 這些屬性描述了項目相對於其父項的位置,而不是視口。

問題#2沒有等待足夠長的點擊觸發事件,調用page.render

前試試這個 -

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) 
}) 
相關問題