簡體   English   中英

初始化頁面對象時,nightwatch失敗

[英]nightwatch fails when initializing page object

我正在嘗試測試Vue應用程序。 我有2個簡單的頁面對象和2個簡單的規范文件。 當我運行e2e測試時,第一個(登錄)順利通過,但第二個失敗並出現以下錯誤:

錯誤:元素“客戶端”沒有選擇器屬性而是找到了屬性:功能,全局變量,sessionId,選項,launchUrl,launch_url,screenshotsPath,Keys,session,sessions,sessions,sessions,timeouts,timeoutsAsyncScript,timeoutsImplicitWait,elemen t,elementIdElement,elements,elementIdElements,elementActive ,elementIdAttribute,elementIdClick,elementIdCssProperty,elementIdDisplayed,elementIdLocationInView,elementIdLocation,elementIdName,elementIdClear,elementIdSelected,element tIdEnabled,elementIdEquals,elementIdSize,elementIdText,elementIdValue,submit,source,contexts,set,Click, mouseButtonDown,mouseButtonUp,執行,執行eAsync,execute_async,幀,frameParent,窗口,windowHandle,windowMaximize,window_handle,windowHandles,window_handles,windowSize,windowPosition,刷新,返回,前進,截屏,URL,狀態,標題,密鑰,cookie,接受,accept_alert,dismissAlert,setAlertText,getAlertText,dismiss_alert,sessionLog,sessionLogTypes, 單擊,clearValue,getAttribute,getCssProperty,getElementSize,getLocation,getLocationInView,getTagName,getText,getValue,isVisible,moveToElement,setValu e,submitForm,sendKeys,switchWindow,resizeWindow,setWindowPosition,maximizeWindow,saveScreenshot,getTitle,closeWindow,init,urlHash ,getCookie,setCookie,deleteCookie,deleteCookies,injectScript,getLogTypes,getLog,isLogAvaiable,waitForElementNotPresent,waitForElementNotVisible,waitForElementPresent,waitForElementVisible,結束,暫停,執行,UseCss,useRecursion,useTest,在C:\\ aquaprojects \\ src \\ bitbucket的新元素(C:\\ aquaprojects \\ src \\ bitbucket.org \\ scalock \\ tenantmanager \\ client \\ node_modules \\ nightwatch \\ lib \\ page-object \\ element.js:11:11)中命名。 org \\ scalock \\ tenantmanager \\ client \\ node_modules \\ nightwatch \\ lib \\ page-object \\ page-utils.js:39:35 at Array.forEach(native)at C:\\ aquaprojects \\ src \\ bitbucket.org \\ scalock \\ tenantmanager \\ Array上的client \\ node_modules \\ nightwatch \\ lib \\ page-object \\ page-utils.js:35:24 .forEach(本機)位於module.exports.createElements(C:\\ aquaprojects \\ src \\ bitbucket.org \\ scalock \\ tenantmanager \\ client \\ node_modules \\ nightwatch \\ lib \\ page-object \\ page-utils.js:34:14)在Object.parent的Object.Page(C:\\ aquaprojects \\ src \\ bitbucket.org \\ scalock \\ tenantmanager \\ client \\ node_modules \\ nightwatch \\ lib \\ page-object \\ page.js:19:6)。(匿名函數)[as租戶](C:\\ aquaprojects \\ src \\ bitbucket.org \\ scalock \\ tenantmanager \\ client \\ node_modules \\ nightwatch \\ lib \\ core \\ api.js:469:16)在(C:/ aquaprojects / src / bitbucket)。 org / scalock / tenantmanager / client / test / e2e / specs / tenants.spec.js:7:26)。 (C:\\ aquaprojects \\ src \\ bitbucket.org \\ scalock \\ tenantmanager \\ client \\ node_modules \\ nightwatch \\ lib \\ util \\ utils.js:35:8)

login.js:

module.exports = {
  url: 'http://localhost:8080/#/login',
  elements: {
    app: '#app',
    loginSection: '.login-page',
    title: 'h3',
    submitButton: '.btn-primary',
    username: '#username',
    password: '#password'
  }
}

login.spec.js:

let login = null
module.exports = {
  before: function (client) {
    console.log('*********** Init login page *******************')
    login = client.page.login()
  },
  'open login page': function () {
    login
      .navigate()
      .waitForElementVisible('@app', 5000)
      .assert.elementPresent('@loginSection')
      .assert.containsText('@title', 'Tenant Manager Login')
  },
  'try to login': function () {
    login.setValue('@username', 'administrator')
    login.setValue('@password', '1234')

    login.click('@submitButton')
    login.waitForElementNotPresent('@submitButton')
  },
  after: function (client) {
    client.end()
  }
}

這一遍通過了,另一遍基本上是復制/粘貼,但有一些更改在此行失敗:

租戶= client.page.tenant()

tenant.js:

module.exports = {
  url: 'http://localhost:8080/#/tenants',
  elements: {
    tab: '#tenants',
    tenantsFilter: '.tenants-filter input',
    statusFilter: '.status-filter input',
    add: '.add-tenant'
  }
}

tenants.spec.js:

let tenant = null
module.exports = {
  before: function (client) {
    console.log('*********** Init tenant page *******************')
    tenant = client.page.tenant()
  },
  'open tenant page': function () {
    console.log('*********** Navigating to tenant page *******************')
    tenant
      .navigate()
      .waitForElementVisible('@tab', 5000)
      .assert.elementPresent('@tenantsFilter')
      // .assert.containsText('@title', 'Tenant Manager Login')
  },
  after: function (client) {
    client.end()
  }
}

nightwatch.conf.js:

require('babel-register')
var config = require('../../config')

// http://nightwatchjs.org/gettingstarted#settings-file
module.exports = {
  src_folders: ['test/e2e/specs'],
  output_folder: 'test/e2e/reports',
  custom_assertions_path: ['test/e2e/custom-assertions'],
  "page_objects_path" : "test/e2e/pages",
  selenium: {
    start_process: true,
    server_path: require('selenium-server').path,
    host: '127.0.0.1',
    port: 4444,
    cli_args: {
      'webdriver.chrome.driver': require('chromedriver').path
    }
  },

  test_settings: {
    default: {
      selenium_port: 4444,
      selenium_host: 'localhost',
      silent: true,
      globals: {
        devServerURL: 'http://localhost:' + (process.env.PORT || config.dev.port)
      }
    },

    chrome: {
      desiredCapabilities: {
        browserName: 'chrome',
        javascriptEnabled: true,
        acceptSslCerts: true
      }
    },

    firefox: {
      desiredCapabilities: {
        browserName: 'firefox',
        javascriptEnabled: true,
        acceptSslCerts: true
      }
    }
  }
}

您尚未定義頁面對象路徑

    require('babel-register')
var config = require('../../config')

// http://nightwatchjs.org/gettingstarted#settings-file
module.exports = {
  src_folders: ['test/e2e/specs'],
  output_folder: 'test/e2e/reports',
  custom_assertions_path: ['test/e2e/custom-assertions'],
  "page_objects_path" : "test/e2e/pages", //page-object path
  selenium: {
    start_process: true,
    server_path: require('selenium-server').path,
    host: '127.0.0.1',
    port: 4444,
    cli_args: {
      'webdriver.chrome.driver': require('chromedriver').path
    }
  },

  test_settings: {
    default: {
      selenium_port: 4444,
      selenium_host: 'localhost',
      silent: true,
      globals: {
        devServerURL: 'http://localhost:' + (process.env.PORT || config.dev.port)
      }
    },

    chrome: {
      desiredCapabilities: {
        browserName: 'chrome',
        javascriptEnabled: true,
        acceptSslCerts: true
      }
    },

    firefox: {
      desiredCapabilities: {
        browserName: 'firefox',
        javascriptEnabled: true,
        acceptSslCerts: true
      }
    }
  }
}

創建目錄“頁面”並將租戶放入其中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM