DalekJS - 从浏览器中检索值

时间:2014-03-04 00:23:19

标签: dalekjs

因此,我试图找出一种在使用DalekJS运行测试时从浏览器获取值的方法。据我所知,目前还不可能。我甚至看过攻击Dalek代码,但是因为除了安装和运行之外我对CommonJS和NodeJS知之甚少,我想我可能实际上先问一下。

我想做的是:

// Non-working example
module.exports = {
  'My Test': function(test) {
    var foo;

    test
    .open('http://localhost/mysite')
    .execute(function(){
      foo = document.getElementById('bar');
    })
    .type('#myField', foo)
    .done();
  }
}

现在我知道为什么这段代码不起作用:因为execute()函数是在浏览器窗口的上下文中执行的(就像我在控制台中输入它一样)。

我问的问题是有没有办法可以检索我在测试中使用的值?


上下文信息:我的用例是我正在测试一个E2E场景,其中提交了一个表单并向用户提供了一个代码。然后需要在另一页上输入此代码。我可能会为测试目的设置模拟值,但那不是真实的情况。

提前致谢!

2 个答案:

答案 0 :(得分:0)

是,

这是我们尚未实现的用例,但在我们找不到合适的解决方案之前,您可以使用解决方法:

module.exports = {
  'My Test': function(test) {
    test
      .open('http://localhost/mysite')
      .execute(function(){
        var foo = document.getElementById('bar').innerText;
        document.getElementById('myField').setAttribute('value', foo);
      })
      .done();
  }
};

此方法存在一些问题,以这种方式将值添加到字段时,将不会触发keyupkeydown等事件处理程序。 如果您的代码不依赖它们,那么您很高兴。 否则,你必须等待几个星期,直到新版本出来,这将为这种情况提供更好的解决方案。

希望有所帮助。

干杯 塞巴斯蒂安

答案 1 :(得分:0)

根据.log.message函数的文档示例,您可以执行以下操作:

module.exports = {
  'My Test': function(test) {
    test
      .open('http://localhost/mysite')
      .execute(function(){
        var foo = document.getElementById('bar').value;
        this.data('foo', foo);
      })
      .type('#myField', test.data('foo'))
      .done();
  }
}