【问题标题】:Dropdown Manipulation in PhantomJSPhantomJS 中的下拉操作
【发布时间】:2016-03-30 14:35:08
【问题描述】:

我正在尝试提交一个仅与下拉菜单一致的表单,以便进入另一个页面。但是,我无法弄清楚如何选择下拉菜单。下面的示例代表了我正在处理的内容。

<select name="p_term" size="1" id="term_input_id">
<option value="">None
</option><option value="201605">Summer Session: May - Aug 2016
</option><option value="201601">Second Term: Jan - Apr 2016
</select>

我试过了

document.getElementById('term_input_id').value='201601';

但是 PhantomJS 不会运行我剩下的代码。

【问题讨论】:

标签: javascript phantomjs html-select


【解决方案1】:

select 元素不像输入,不能直接赋值。

var val = 201601;
var sel = document.getElementById('term_input_id');
var opts = sel.options;
for(var opt, j = 0; opt = opts[j]; j++) {
    if(opt.value == val) {
        sel.selectedIndex = j;
        // or:
        // opt.selected = true
        break;
    }
}

(来自this优秀的答案)

然后,您必须触发将页面重定向到另一个位置的onchange 事件:

var evt = document.createEvent("HTMLEvents");
evt.initEvent("change", false, true);
sel.dispatchEvent(evt);  

(来自this 回答)

但是 PhantomJS 不会运行我剩下的代码。

要找出导致脚本中断的错误,请订阅page.onError 回调。

【讨论】:

  • @ArtjomB。如果在&lt;select&gt; 上使用change 事件触发它,那么以编程方式编写和调度事件是可行的方法。
  • @ArtjomB,谢谢,你是对的,答案没用,更新了例子来触发change事件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多