我有选择形式:
<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ählen...</option>
<option value="m">Mä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');
});
这也是在第一时间工作,性别被选择直到我点击提交按钮。任何想法我做错了什么?或者我可以选择表格的其他方式的任何想法?
答案 0 :(得分: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
});
祝你好运!!!
答案 1 :(得分:0)
casper.then(function(){
this.fillSelectors('form#formID', {
'select[id=Gender]': 'm', //variable for gender
}, true);
});
唯一的问题是我在调试模式下收到警告:
[warning] [remote] unable to submit form
但完全没问题。