PhantomJS中的下拉操作

Dropdown Manipulation in PhantomJS

本文关键字:操作 PhantomJS      更新时间:2023-09-26

我正在尝试提交一个表单,仅与下拉菜单一致,以便进入另一个页面。但是,我不知道如何选择下拉列表。下面的示例表示我正在处理的内容。

<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 不会用这一行运行我的其余代码。

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;
    }
}

(来自这个优秀的答案)

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

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

(从这个答案)

但是 PhantomJS 不会用这一行运行我的其余代码。

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