简体   繁体   中英

Error when importing .js file in one folder to spec.js file in another folder

I am new to the protractor, and trying to create a project in cucumber using POM. Following is the structure of the project: 在此处输入图像描述

In the addCustomerPage.js, I have mentioned the locators as well as the functions to perform a test:

var addCustomerPage = function () {

    var BankManagerButton = element(by.buttonText('Bank Manager Login'));
    ***Other locators*****

    this.create = async function(fName,lName,pCode){
        await BankManagerButton.click();
        ****rest of the steps*****
    }
}
module.exports = new addCustomerPage();

But when in the spec.js, import the above class, on running the code, it throws the error:

E/launcher - Error: Error: Cannot find module '../pages/addCustomerPage'

Following is the spec.js file's code:

var {
    setDefaultTimeout
} = require('cucumber');
const {
    expect
} = require('chai');
setDefaultTimeout(10 * 1000);
var addCustomerPage = require('../pages/addCustomerPage');
Given('I open the application and click on create customer button', async function () {
    **code*****
});

When('I enter {string}, {string}, {string}', async function (fname, lname, pcode) {
    return await addCustomerPage.create(fname, lname, pcode);
});

However, this works fine if the pages folder is under the features folder. Can anyone help on what am I doing wrong here?

../

The symbol above is signalling to go up one file directory.

When the variable is declared like this...

var addCustomerPage = require('../pages/addCustomerPage');

... your computer will go up one folder level from the current directory and search for the pages folder and not find it.

When you copied the pages folder and put it under the feature folder, it can detect it because it falls under the directory that you were searching it for

The solution is to:

  1. Just paste your pages folder under features
    or
  2. Modify the file path in the variable to where your pages folder is located

Im guessing you have to go up a directory or two, so use this command ../ to get to where your page folder is

var addCustomerPage = require('../../pages/addCustomerPage');

The idea is to modify the file path to wherever the page folder might be

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM