0

I have created a test project using page object model. When I run, it creates "Cannot find module" error. I have tried several answers but didn't work.
Here is my code

Config.js

exports.config = 
{
seleniumAddress: 'http://localhost:4444/wd/hub',
//specs: ['spec.js']
specs: ['./testSpec/**/*.js'],
jasmineNodeOpts: {
    defaultTimeoutInterval: 12000
},
onPrepare: function () {
    browser.manage().window().maximize();
    browser.manage().timeouts().implicitlyWait(5000);
}
};            

login.po.js

var loginPageLocator = function()
{
var userName = Element(by.model('vm.username'));
var password = Element(by.model('vm.password'));
var signInButtonText = Element(by.buttonText('Sign in'));

this.get = function()
{
    browser.get('http://20.150.10.160/login');

};

this.typeUserName = function(userName)
{
    this.userName.sendKeys(userName);

};

this.typePassword = function(password)
{
    this.password.sendKeys(password);

};

this.clickSignIn = function()
{
    this.signInButtonText.click();

};

};
module.exports = new loginPageLocator();      

LoginTest.js

var logins = require('./../pageObjects/login.po.js');

describe('login to the system',function()
{
it('login as a dealer',function()
{
    var loginPage = new logins();
    loginPage.typeUserName('test');
    loginPage.typePassword('222');
    loginPage.clickSignIn();

});

});        

Here is the folder structure
folder structure

Package.json
package.json

  • Please ensure npm, protractor version. Thanks! – Rohan Kalia Jun 6 '19 at 11:04
  • @Rohan I have define protractor and jasmine versions in package.json file – Joe Jun 6 '19 at 11:09
1

In your LoginTest.js , you have given incorrect reference of page object. change it to:

var logins = require('../../pageObjects/login.po.js');

and then you do not need to create a page object, instead you should directly use the object that you have created earlier like below

logins.typeUserName('test');

update your conf.js file, a sample is below:

    exports.config = {
        directConnect: true,
        capabilities: {
            'browserName': 'chrome'
        },
        framework: 'jasmine',
        baseUrl: "http://url.com",
        specs: ['./*_specs.js'],

        onPrepare: function() {
            browser.driver.manage().window().maximize();
            //create a global variable like below
global.variableName = "hello";
        }
}
  • still it gives the same error. If I imported the package/module correctly it should show methods inside it right? But I don't get suggestions – Joe Jun 6 '19 at 11:16
  • Please copy your LoginTest.js under testSpec folder and check. – Pankaj Dubey Jun 6 '19 at 11:22
  • path you mentioned works. Now I can access methods. New error appeared "Error: ReferenceError: Element is not defined" – Joe Jun 6 '19 at 11:33
  • Browser doesnt navigate to login page – Joe Jun 6 '19 at 11:34
  • That's because you haven't called the get method in your test script. call the get method in your it block of LoginTest.js – Pankaj Dubey Jun 6 '19 at 11:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.