Protractor AngularJS全局变量

4

我正在使用带有AngularJS的Protractor来创建端到端测试。 我有许多文件,我的specs数组非常大,并且我想在所有文件中共享一个通用函数。 是否有一种方法可以创建某种全局beforeEach,在其中可以注入我的函数?exports.config对象是否公开了某些内容,以便我可以在所有文件中拥有一个共同的变量?目前,我正在借助“browser”变量,但这可能很危险。非常感谢您的帮助。谢谢

2个回答

12

是的,您可以通过protractor配置中的onPrepare()挂钩轻松实现:

exports.config = {
    // ...

    // A callback function called once protractor is ready and available, and
    // before the specs are executed
    // You can specify a file containing code to run by setting onPrepare to
    // the filename string.
    onPrepare: function() {
        // you can also add properties to globals here
    }
 };

我尝试过了,但对我没有用。我在onPrepare函数中写了以下代码:function(){ var ptor = protractor.getInstance(); } 但是在我的第一个测试中,ptor不再可用。 - climboid
2
var ptor 使ptor成为onPrepare()函数的本地变量。您需要将其添加到全局变量中:global.ptor = protractor.getInstance()。无论如何,最近版本的protractor已经不需要这样做了,它会自动发布一个“browser”全局变量(之前称为ptor)。您只需要在测试中使用browser即可。 - JB Nizet
2
啊,好的,我在我的评论中只是想强调变量的重点,但我明白你的意思。实际上,我现在正在使用浏览器变量并向其添加属性,例如browser.projectId = 10,这样可以在所有文件中持久化。我想这是正确的做法。 - climboid

-1

这个非常有效...只要确保使用适当的分隔符','正确终止前面的配置参数。

        exports.config = {
           seleniumAddress: **,**
           onPrepare: function() {
              browser.driver.manage().window().maximize();
           }**,**
           baseUrl:
           }

这完全没有回答问题。 - Eddie Monge Jr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接