在为我的web应用程序编写测试时,我必须首先模拟登录,然后其他测试才能运行并查看内部页面。现在我正在对代码进行调整,这样我就可以为常见的函数创建一个'include‘,比如我的登录。但是,一旦我将下面的代码移动到一个单独的文件中,并通过require
调用include -它就不再像预期的那样运行。
即。下面登录并允许我的其他功能,如果包含在同一文件中。高于我的其他内部屏幕功能。
// Login screen, create opportunity
this.LoginScreen = function(browser) {
browser
.url(Data.urls.home)
.waitForElementVisible('#login', 2000, false)
.click('#login')
.waitForElementVisible('div.side-panel.open', 4000, false)
.waitForElementVisible('input#email', 2000, false)
.waitForElementVisible('input#password', 2000, false)
.click('input#email')
.pause(500)
.setValue('input#email', Data.ProjMan.username)
.click('input#password')
.pause(500)
.setValue('input#password', Data.ProjMan.password)
.click('input#email')
.pause(500)
.click('div.form.login-form .btn')
.pause(5000)
Errors.checkForErrors(browser);
};
// Inner functions run after here, sequentially
但只要我将上面的代码移到一个单独的文件中,例如:Logins.js
,就会在原始测试文件的顶部用调用它。(是,正确的路径)。
var Logins = require("../../lib/Logins.js");
它只是不再模拟登录。有什么想法吗?我是否应该移除this.LoginScreen
函数包装器,并以不同的方式调用它以从外部文件执行,或者除了外部请求路径之外,我是否需要从原始文件再次启动它?
我也尝试过从单独的文件中对登录函数包装'module.exports = {
‘,但仍然失败。
发布于 2020-07-05 05:36:19
上面的答案是绝对正确的,但是我确实遇到了如何提供登录用户详细信息的问题。
这就是我最终使用的:
var loginCommands = {
login: function() {
return this.waitForElementVisible('body', 1000)
.setValue("#email", "<some rnd email address>")
.setValue('#password', "<some rnd password>")
.click('button[type=submit]')
.pause(1000)
}
};
module.exports = {
commands: [loginCommands],
url: function() {
return 'https://example.com/login';
}
};
这可以以与接受的答案相同的方式使用,只是发布给其他来搜索的人。
https://stackoverflow.com/questions/52120357
复制相似问题