每次在量角器中打开浏览器时如何访问onPrepare中的功能

时间:2018-10-22 10:28:33

标签: protractor

我正在使用量角器-黄瓜框架(量角器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函数内部的代码。谢谢。

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

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

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

OR

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