【问题标题】:How to access functions in onPrepare while opening the browser each time in protractor每次在量角器中打开浏览器时如何访问onPrepare中的功能
【发布时间】:2019-02-01 15:35:15
【问题描述】:

我正在使用量角器-黄瓜框架(量角器 5.2.2 和黄瓜 3.2.0)。我需要使用多个用户凭据登录。所以我需要使用隐身窗口。所以我在我的配置文件中进行了设置下面。

capabilities: {
'browserName': 'chrome',
 chromeOptions: {
    args: ["--incognito"]
 }
},

我已经添加了

browser.restart();

在每个注销代码之后。但是当我打开新的隐身窗口时,我无法访问 onPrepare 函数内部的代码。我的 onPrepare 函数如下所示。

onPrepare: function() {
 browser.ignoreSynchronization = true;
 browser.manage().window().maximize();
 global.testdata = require('./support/testdata.js');
}

那么我如何在每次打开浏览器时访问 onPrepare 函数内部的代码。提前致谢。

【问题讨论】:

    标签: protractor


    【解决方案1】:

    您可以将onPrepare() 中的代码包装到一个函数中,并将该函数导出到一个.js 文件中。

    // onPrepare.js, move the codes in `onPrepare()` at here  
    module.exports = function onPrepareConfig() {
        browser.ignoreSynchronization = true;
        browser.manage().window().maximize();
        global.testdata = require('./support/testdata.js');
    }
    
    
    // protractor conf.js       
    onPrepare: function() {
        // you need to import `onPrepare.js` within this function
        // because the variable `browser` we used in `onPrepare.js`
        // are available inside `onPrepare()`
    
        var onPrepareConfig = require('./onPrepare.js');
        onPrepareConfig();
    }
    
    
    // the code line where you call browser.restart();
    browser.restart();
    var onPrepareConfig = require('./onPrepare.js');
    onPrepareConfig();
    

    【讨论】:

      【解决方案2】:

      Node.js 基于javascript 单线程语言。因此,每个打开浏览器的测试都在单独的进程中运行,这就是您不需要incognito 模式的原因。问题是如何在多个测试不同用户之间共享。最简单的方法是:

      • 在项目的根目录中使用不同的用户凭据创建一个文件,并在测试中beforeAll() 获取凭据并从文件中删除此行。测试结束时将其返回。

      • 您使用简单的 API 创建一个服务器,用于获取不同的凭据并在测试中使用它。 如您所见,它有点复杂。

      【讨论】:

      • 感谢您的回复..但我需要使用隐身窗口,因为我们的应用程序将像在 Gmail 中一样保存用户名。我正在从我们的数据库中获取用户凭据。我正在输入一个表通过将每一行数据循环到我们的应用程序来获取数据(具有多个用户的数据)。所以我的功能文件中只有一个步骤,我的 stepdefenition 文件中只有一个功能,在这个单一功能中,我需要注销并登录到作为不同的用户。所以我不能使用 beforeAll()。
      • 我不知道有一些 Cucumber 限制。但是您的每个测试都有:登录、测试、注销。所以这应该是在测试中!您应该以某种方式放置不同的凭据(总是下一行)。
      猜你喜欢
      • 1970-01-01
      • 2012-12-24
      • 1970-01-01
      • 1970-01-01
      • 2019-04-12
      • 2019-04-10
      • 1970-01-01
      • 2016-01-11
      • 1970-01-01
      相关资源
      最近更新 更多