javascript - CasperJS 无法设置选择列表值

标签 javascript phantomjs html-select casperjs

我有一个如下所示的选择列表:

<select id="ListingType" name="Criteria/ListingTypeID" onchange="Search.toggleListingType(this);">
    <option selected="selected" value="1">RH1</option>
    <option value="2">BC4</option>
    <option value="3">RR3</option>
    <option value="4">RH2</option>
    <option value="5">RE0</option>
</select>

我正在尝试将该值设置为 3。我尝试了 3 种方法,但均未成功。

1.

this.evaluate(function(value) {
    document.querySelector('select#ListingType').value = value;
    return true;
}, '3');
// insure the onChange JS is run
this.evaluate(function() {
    var element = document.querySelector('select#ListingType');
    var evt = document.createEvent('HTMLEvents');
    evt.initEvent('change', false, true);
    element.dispatchEvent(evt);
});

这似乎有效(不抛出任何错误),但值没有改变。

2.

this.fillSelectors('select#ListingType', {
    'select[name="Criteria/ListingTypeID"]' :  "3"
}, true);

这会抛出错误消息:“CasperError:填写表单时遇到错误:表单中没有与 css 选择器“select[name=”Criteria/ListingTypeID”]”匹配的字段”

我的选择器出了什么问题?

3.

// In desperation...
this.sendKeys('select#ListingType', 'RR3');

这似乎也有效(没有错误),但该值再次没有改变。

为了完整起见,我尝试在每个变体之后发送“更改”事件。我还在每个之后转储所选元素的属性,并且它从不显示所设置的值。

请注意,此选择器所在的页面上有大量 JS 代码,并且此