量角器:browser.variableName有时是未定义的,有时它有一个值



我正在用量角器测试非Angular页面。我有一个变量,我在存储为浏览器对象的规范中使用它。问题是我在某些规范中使用它,但有时它未定义。奇怪的是,在同一个规范文件中,很少有情况在使用之前没有问题。似乎它失去了介于两者之间的价值,即使我不调用或操纵它。

会议:

onPrepare: function() {
    ...
    beforeAll(function) {
        return browser.ignoreSynchronization = true;
    }
}

我在其中定义此变量的规范 1:

// page objects
var createUserPage = require('...
// variables
var username = '';
describe(... {
    it(... {
        ...
        // initializing page objects
        var createUser = new createUserPage();
        // store useername text in global variable
        createUser.successfullyCreatedUserText.getText().then(function(text) {
            browser.username = text;
        });
    });
});

我使用此变量的规范 2:

describe(... {
    it(... {
        ...
        // display username
        console.log("Username: " + browser.username);
        // enter username
        home.usernameInput.clear().sendKeys(browser.username);
        // pause browser
        browser.sleep(500);
        // click on Search button
        home.searchButton.click();
    });
});

正如在我获得控制台输出之前所写的那样,例如:

用户名:未定义

和堆栈跟踪中的错误:

TypeError:每个键必须是多个字符串;未定义

这种情况不会一直发生,而是偶尔发生。我做错了什么?

我会在您的配置中声明变量,无论是global还是param。 我可能会以global的方式执行此操作,因为参数通常在运行测试之前在配置中分配。

onPrepare: function() {
    global.username;
}

然后在您的规范中,您可以分配值(不记得您是在规范中使用global.username还是只是username(,只要该驱动程序会话保持活动状态,变量就会一直存在。

相关内容

  • 没有找到相关文章

最新更新