当前位置: 首页 > 面试题库 >

量角器设置全局变量

傅雪松
2023-03-14
问题内容

我试图在量角器上设置一个全局变量,以在所有描述块中使用。

var glob = 'test';

describe('glob test', function () {
    it('should set glob', function () {
        browser.get('http://example.com/test');
        browser.executeScript(function () {
            window.glob = glob;
        });
    });    
});

但这返回了以下错误:

Message:
[firefox #2]      UnknownError: glob is not defined

我也看了这个问题:量角器angularJS全局变量

所以我试图以这种方式在conf.js中设置变量glob:

exports.config = {
  ...,
  onPrepare: function () {
      global.glob = 'test';
  }
};

仍然有相同的错误。

如何在量角器测试中正确添加全局变量?


问题答案:

可以借助params属性从量角器配置文件设置全局变量:

exports.config = {
    // ...

    params: {
        glob: 'test'
    }

    // ...
};

您可以使用规范中访问它browser.params.glob

请参阅参考配置文件。

params对象将直接传递到Protractor实例,并且可以从您的测试中以browser.params进行访问。它是一个任意对象,可以包含测试中可能需要的任何内容。可以通过命令行将其更改为:

protractor conf.js --params.glob 'other test'

更新:

从文档中获取browser.executeScript

如果脚本作为函数对象提供,则该函数将转换为字符串以注入到目标窗口中。除脚本之外提供的所有参数都将作为脚本参数包含在内,并且可以使用arguments对象进行引用。

因此,在这种情况下,JavaScript作用域不起作用,传递给您的函数browser.executeScript将不会有来自规范的闭包变量,例如browser。但是您可以显式传递这些变量:

browser.executeScript(function (glob) {

    // use passed variables on the page
    console.log(glob);

}, browser.params.glob);


 类似资料:
  • 我使用的是swing,有一个函数(CreateAndShowGUI())可以监听上、左、右键的按下 现在,当我运行程序并按下任意键(向上、向左、向右、向下)时,我可以看到按下的键变量被设置为True。但当我试图在main中访问相同的内容时,按下的这个键的值为false。谁能帮我找出我错的地方吗?

  • 问题内容: 我使用设置全局变量的代码无法正常工作。好像根本没有调用分配,但是没有脚本错误发生。 页面加载后,警报将显示我的期望值。它确认x =1。但是此后,我单击div并得到了一个未定义的JavaScript错误。如何正确添加此变量? 背景:上面的代码是我正在研究的项目中最少复制的示例,我们必须在AJAX响应期间执行javascript代码。大多数时候都能正常工作,但这会引起问题。 问题答案: E

  • This is a list of variables that are always implicitly assigned to the . This is handy for making global variables or server variables available to all templates without having to manually assign them

  • 如果你要多于一个函数共用一个简单的变量,简单的处理方法就是把这个变量在所有函数中定义为global全局变量。在命令行做同样的事情,如果你要工作空间访问上述变量。这个全局变量的定义必须出现在变量被应用于一个函数之前。虽然不是要求,但全局变量也最好以大写字母开头,这样可以同其他变量区别出来。举个例子,做一个以falling.m命名的M-文件。 function h = falling(t) globa

  • ThinkCMF封装了前台模板开发时常用的一些变量,这些变量是全局的,你在前台模板任何时候都能直接调用: {$site_name} /站点名称 {$site_host} /站点域名 {$site_root} /安装目录 {$site_icp} /

  • swoole内置了几个全局变量供程序内使用。一般不要自行创建全局变量。 SwooleG 超全局本地内存变量,此变量在swoole_init时就初始化好了。存储了一些全局的信息。但不是共享内存的。当创建子进程后再修改其中的字段,其他进程是感知不到的 SwooleG.main_reactor,全局事件循环 SwooleG.lock,全局锁 SwooleG.memory_pool,全局共享内存池 Swo