【问题标题】:CasperJS loses select box vaue after submitCasperJS 提交后丢失选择框值
【发布时间】:2016-05-05 20:18:44
【问题描述】:

我有那个选择表格:

<div class="row">
  <div class="col-xs-18 form-group">
  <label class="text-base" for="Gender">Geschlecht</label>
    <select id="Gender" class="form-control" data-bind="value: gender, hasFocus: gender.focused, css: { 'has-error': showError(gender) }" name="Gender">
      <option value="" selected="selected">Ausw&auml;hlen...</option>
      <option value="m">M&auml;nnlich</option>
      <option value="f">Weiblich</option>
      <option value="u">Keine Angabe</option>
   </select>
  <div class="alert alert-error" aria-atomic="true" aria-relevant="text" aria-live="assertive" data-bind="errorMessage: gender, visible: showError(gender)" style="display: none;">Diese Informationen sind erforderlich.</div>
</div>

并以这种方式填充:

casper.then(function() {
    this.evaluate(function(anrede_inside) {
        document.querySelector('select#Gender').value = anrede_inside;
    }, anrede);
});

到目前为止,它工作得很好。但是当我提交页面时,我收到一条错误消息,指出我没有填写性别值,并且该值已更改为默认值。我已经用截图检查过了。

提交在页面上:

<div class="col-xs-18">
   <input id="CredentialsAction" class="btn btn-primary btn-block" type="submit" value="Klick" title="Klick">
</div>

我这样点击它:

casper.then(function(){
    this.click('input[title*="Klick"]');
});

我也尝试过这样选择性别:

casper.then(function (){
    this.sendKeys('select#Gender', 'w');
});

这也在第一时间起作用,选择性别直到我单击提交按钮。任何想法我做错了什么?或者关于我可以选择表格的其他方式的任何想法?

【问题讨论】:

    标签: javascript html-select casperjs


    【解决方案1】:

    你能在下面试试这个吗? 我相信这会解决你的问题。

    casper.then(function(){
       //select value "u" - Keine Angabe
       this.evaluate(function(selectValue){
           document.querySelector('select[id=Gender]').value = selectValue; 
           return true;
       }, "u"); //set value "u"
       this.capture('capture.png'); //see this image to confirm change
    });
    casper.then(function() {
        this.click('#CredentialsAction'); //click on input element by id
    }); 
    

    祝你好运!!!

    【讨论】:

    • thx.. 但是嗯.. 不,它确实 :-(... 它与我的 casper.then(function() { this.evaluate(function(anrede_inside) { document.querySelector ('select#Gender').value = anrede_inside; }, anrede); }); 但是你添加了一个“return true”......我仍然有同样的问题
    【解决方案2】:

    好的,我尝试了所有填充方法。最后修复它:

    casper.then(function(){
     this.fillSelectors('form#formID', {
     'select[id=Gender]':    'm', //variable for gender
    }, true);
    });
    

    唯一的问题是我在调试模式下收到警告:

    [warning] [remote] unable to submit form
    

    但完全没有问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-09
      • 2011-12-19
      • 2011-07-10
      • 1970-01-01
      • 2022-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多