【问题标题】:Global variable that survives browser closed [wdio web driver io]在浏览器关闭后幸存的全局变量 [wdio web driver io]
【发布时间】:2020-06-05 19:14:03
【问题描述】:

我有几个套件,每个套件都有一些规范文件。

我注意到,wdio 在任何规范文件中运行所有测试后,它会关闭浏览器并打开一个新的浏览器实例。在这种情况下,甚至本地存储也会被删除。

所以我很难找到一个地方来定义一个变量,它的值在所有测试中都保持不变。

我尝试在 wdio.base.conf.js 文件的顶部定义一个数组。

let globalStuff = []

const config = { ...


beforeTest: function (test) {
      globalStuff.push(Math.random())
},

afterSession: function (config, capabilities, specs) {
    console.log(globalStuff)
    },
 }

观察:globalStuff 的值每次都会重置,并且只包含 x 项(x 是如果 it 在规范文件中测试的数字)

期望:globalStuff 的值应该是所有推送值的聚合。

【问题讨论】:

    标签: webdriver-io wdio-v5


    【解决方案1】:

    我们实现这一目标的一种更简单的方法是使用全局对象。

    您可以在配置文件中设置类似global.platform = web 的内容,这应该可以在您的所有测试中访问。同样,您可以在全局对象上设置任意数量的唯一属性,并且它们应该可以在您的测试中访问。

    你的 sn-p 应该如下。

    global.globalStuff = []
    
    const config = { ...
      beforeTest: function(test) {
        globalStuff.push(Math.random())
      },
    
      afterSession: function(config, capabilities, specs) {
        console.log(globalStuff)
      },
    }
    

    Here 是实现此功能的示例项目。

    【讨论】:

    • 谢谢;但是我如何初始化这个 global. globalStuff ?如果我将示例中的globalStuff 替换为global. globalStuff,那么我会得到相同的结果。我认为问题出在:global.globalStuff = [] 在配置文件之上。
    • 我已经更新了我的答案。你能试试那个sn-p吗?
    • ``` '------- afterSession ---------' [ '0.14', '0.67' ] '------- afterSession -- -------' [ '0.69', '0.67', '0.89', '0.37' ] ``` 所以每个会话都会获得一组新的值!!!我希望在第二个日志之后看到这个:[ '0.14', '0.67' , '0.69', '0.67', '0.89', '0.37' ]
    • 也许你应该把它移到before钩子,这样每次执行它只运行一次。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    相关资源
    最近更新 更多