learningruby347
learningruby347

Reputation: 233

getText is not a function error - Protractor (javascript)

I have node.js installed and protractor installed. I have experience with selenium-webdriver but Protractor is driving me nuts!!! I am also not that familiar with javascript.

This is what my code looks like:

describe('My app', function() {

    var result = element(by.id('result-name'));
    var enterBtn = element(by.id('enter'));
    var clearFieldBtn = element(by.id('clear-field'); 

    it('should bring up components on load', function() {
        browser.get(`http://localhost:${process.env.PORT}`);
        browser.wait(until.titleContains('Sample App'), 500);
        browser.wait(until.presenceOf(browser.element(by.id('my-test-app'))), 500);

        expect(enterBtn).isPresent;
      });

    it('result should equal username', function () {
        browser.get(`http://localhost:${process.env.PORT}`);

        expect(clearFieldBtn).isPresent;
        expect(result.getText()).toEqual('John Smith'); //both tests pass without this line of code   

    });

});

The last line "expect(result.getText()).toEqual('John Smith');" throws me an error. I get:

expect(...).toEqual is not a function

Any help would be much appreciated. I have spent a couple of hours trying to find a solution and trying different things.

I also wanted to implement the isPresent function how it's done in the api docs which is like this: expect($('.item').isPresent()).toBeTruthy();

I tried to do:

expect(clearFieldBtn).isPresent().toBeTruthy();

But I get that isPresent is not a function...

Upvotes: 2

Views: 6096

Answers (2)

PQ Co
PQ Co

Reputation: 517

Have you tried these lines:

    clearFieldBtn.isPresent().then(function(bln) {
         expect(bln).toBe(true);
    });

    result.getText().then(function(tmpText) {
         expect(tmpText).toBe('John Smith');
    });

If you still get an error on result.getText(), please check the presence of the result object.

Upvotes: 2

LostJon
LostJon

Reputation: 2387

The expect above that line seems poor. It should read

expect(clearFieldBtn.isPresent()).toBeTruthy();

not sure if that is causing the weird error on the line below...just thought I would throw it out there. All your protractor APIs need be be called within the expect because isPresent is not a attribute of expect

Upvotes: 3

Related Questions