2013-10-18 154 views
0

我試圖通過劫持控制頁面上顯示的查詢結果數的表單元素來規避一些困難的查詢結果分頁。當我已經在Firebug控制檯中針對實時站點測試了我的Javascript修改後,它就像一個冠軍,但是當通過casper.evaluate方法將相同的Javascript注入DOM時,我得到的結果不一致。更改選擇框選項的值,並在CasperJS中選擇它

我的代碼如下:

var s = document.getElementById("requisitionListInterface.dropListSize"); 
s.options[4].value = 1000; 
s.options[4].selected = true; 
var e = document.createEvent("HTMLEvents"); 
e.initEvent("change", false, true); 
setTimeout(function(s, e){ s.dispatchEvent(e); }, 2000, s, e); 

我不得不然後創建事件處理程序的「e」,它才能連接到元素的「對複製的東西正在發生的形式(當select.change發生時提交頁面)。

上面的代碼每次都在Firefox中按預期運行。

+0

在WebKit瀏覽器(例如Chrome)中放一下。 PhantomJS基於WebKit。如果它在WebKit瀏覽器中運行,則可能需要提供您正在使用的頁面,以便其他人也可以使用該頁面。 –

+0

或嘗試使用Arora,它使用與PhantomJS相同版本的Webkit和js引擎http://code.google.com/p/arora/ – NiKo

回答

0

如果選擇框正在觸發Ajax,您可能不會給瀏覽器足夠的時間來獲取結果。我會在那裏放置一些等待語句,以便有足夠的時間來查找和執行。