我有一个我需要提交的表单,它有动态添加的输入。使用Casper单击创建输入的元素似乎无效。
有没有办法用CasperJS将这些输入添加到dom中?如果没有,是否有另一种解决方案来提交一个表格,其中的附加值超出当时的dom值?
答案 0 :(得分:1)
您可以通过 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。