我有一个包含隐藏字段的表单;
<input name="qsID" type="hidden" value="1368113958" />
这是Concrete5添加的隐藏字段。
当提交表单时,隐藏字段不存在,Concrete5(PHP)无法看到隐藏字段,因此可能CasperJS没有发送隐藏字段。
为什么会这样?
更新
使用var_dump
我可以看到整个$_POST
数组为空
更新2
似乎这一段代码是正确发布和失败的表单之间的区别;
casper.waitForSelector("#Question33",
function success() {
this.test.assertExists("#Question33");
this.click("#Question33");
},
function fail() {
this.test.assertExists("#Question33");
});
此代码还会中断表单数据的发布
casper.waitForSelector("form#miniSurveyView576 input[name='Question34']",
function success() {
this.test.assertExists("form#miniSurveyView576 input[name='Question34']");
this.click("form#miniSurveyView576 input[name='Question34']");
},
function fail() {
this.test.assertExists("form#miniSurveyView576 input[name='Question34']");
});
答案 0 :(得分:0)
我基本上不得不废弃此代码,因为它根本不起作用。
我最终得到的是这样的
casper.test.begin('web site up', 4, function(test) {
casper.start(url).then(function() {
this.test.assert(
this.getCurrentUrl() === url, 'url is the one expected'
);
this.test.assertHttpStatus(200, url + ' is up');
functions.viewPortCapture(casper, viewports[0], "1001");
test.assertExists(x("//a[normalize-space(text())='ABC']"));
this.click(x("//a[normalize-space(text())='ABC']"));
this.waitForUrl(/abc\/$/, function(){
test.assertExists("input[type='submit']");
});
});
casper.run(function() {
test.done();
});
});