【发布时间】:2014-07-29 23:43:45
【问题描述】:
我需要提交一个动态添加输入的表单。使用 Casper 单击创建输入的元素似乎没有效果。
有没有办法使用 CasperJS 将这些输入添加到 dom 中?如果没有,是否有另一种解决方案来提交具有超出当时 dom 中的附加值的表单?
【问题讨论】:
标签: casperjs
我需要提交一个动态添加输入的表单。使用 Casper 单击创建输入的元素似乎没有效果。
有没有办法使用 CasperJS 将这些输入添加到 dom 中?如果没有,是否有另一种解决方案来提交具有超出当时 dom 中的附加值的表单?
【问题讨论】:
标签: casperjs
您可以通过 casper.evaluate 在 DOM 上下文/页面上下文中运行纯 javascript。其中一部分可能如下所示:
casper.evaluate(function(formSelector, values){
var form = querySelector(formSelector);
for(var key in values) {
if (values.hasOwnProperty(key)) {
var hidden = document.createElement("input");
hidden.type = "hidden"
hidden.name = key;
hidden.value = values[key];
form.appendChild(hidden);
}
}
}, "#form", {key1: "value1", key2: "value2"});
请记住,evaluate 是沙盒化的,对象的交换是有限的。
我仍然建议您尝试修复点击问题。短期内模拟一些调用可能是可以接受的,但是如果您尝试创建一个大型测试套件,您将需要维护代码库,而这将很难维护。
请注册remote.message 和page.error 活动。也许有错误。如果绑定是一个问题,您需要一个shim。
如果这没有透露任何信息,请参阅我的建议 here。
【讨论】: