我正在用量角器测试非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
(,只要该驱动程序会话保持活动状态,变量就会一直存在。