【问题标题】:CasperJS submitting with form fields that do not existCasperJS 使用不存在的表单字段提交
【发布时间】:2014-07-29 23:43:45
【问题描述】:

我需要提交一个动态添加输入的表单。使用 Casper 单击创建输入的元素似乎没有效果。

有没有办法使用 CasperJS 将这些输入添加到 dom 中?如果没有,是否有另一种解决方案来提交具有超出当时 dom 中的附加值的表单?

【问题讨论】:

    标签: casperjs


    【解决方案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.messagepage.error 活动。也许有错误。如果绑定是一个问题,您需要一个shim

    如果这没有透露任何信息,请参阅我的建议 here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-20
      • 2018-07-31
      • 2015-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多