首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用nightwatch.js测试创建“公共”login.js include

使用nightwatch.js测试创建“公共”login.js include
EN

Stack Overflow用户
提问于 2018-09-01 01:36:15
回答 1查看 2.4K关注 0票数 1

在为我的web应用程序编写测试时,我必须首先模拟登录,然后其他测试才能运行并查看内部页面。现在我正在对代码进行调整,这样我就可以为常见的函数创建一个'include‘,比如我的登录。但是,一旦我将下面的代码移动到一个单独的文件中,并通过require调用include -它就不再像预期的那样运行。

即。下面登录并允许我的其他功能,如果包含在同一文件中。高于我的其他内部屏幕功能。

代码语言:javascript
复制
// 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,就会在原始测试文件的顶部用调用它。(是,正确的路径)。

代码语言:javascript
复制
var Logins      = require("../../lib/Logins.js");

它只是不再模拟登录。有什么想法吗?我是否应该移除this.LoginScreen函数包装器,并以不同的方式调用它以从外部文件执行,或者除了外部请求路径之外,我是否需要从原始文件再次启动它?

我也尝试过从单独的文件中对登录函数包装'module.exports = {‘,但仍然失败。

EN

回答 1

Stack Overflow用户

发布于 2020-07-05 05:36:19

上面的答案是绝对正确的,但是我确实遇到了如何提供登录用户详细信息的问题。

这就是我最终使用的:

代码语言:javascript
复制
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';
      }
  };

这可以以与接受的答案相同的方式使用,只是发布给其他来搜索的人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52120357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档