2013-10-18 153 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,您可能不会给浏览器足够的时间来获取结果。我会在那里放置一些等待语句,以便有足够的时间来查找和执行。