【发布时间】:2013-10-18 16:50:59
【问题描述】:
我试图通过劫持控制页面上显示的查询结果数量的表单元素来规避一些困难的查询结果分页。当我在 Firebug 控制台中针对实时站点测试我的 Javascript 修改时,它就像一个冠军一样工作,但是当通过 casper.evaluate 方法将相同的 Javascript 注入 DOM 时,我得到不一致的结果。
我的代码如下:
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”并将其附加到元素“s”,以便复制表单上发生的事情(当 select.change 发生时提交页面)。
上面的代码每次都在 Firefox 中按预期运行。
【问题讨论】:
-
在 Chrome 等 WebKit 浏览器中试一试。 PhantomJS 毕竟是基于 WebKit 的。如果它在 WebKit 浏览器中工作,您可能必须提供您正在使用的页面,以便其他人也可以尝试。
-
或者尝试使用Arora,它使用与PhantomJS相同版本的Webkit和js引擎code.google.com/p/arora
标签: javascript phantomjs html-select casperjs