【问题标题】:Changing the value of a select box option and selecting it in CasperJS更改选择框选项的值并在 CasperJS 中选择它
【发布时间】: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


【解决方案1】:

如果选择框正在触发 Ajax,您可能没有给浏览器足够的时间来获取结果。我会在那里放一些等待语句,以便有足够的时间来查找和执行。

【讨论】:

    猜你喜欢
    • 2018-04-01
    • 2016-09-28
    • 1970-01-01
    • 2020-10-20
    • 2011-03-01
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多