Invalid variable

I am writing the following JS code with a protractor. Here I used the data.json file to read data for my test case. In this case, I just read the element from this JSON and compare it with the value that I read from the browser.

The problem I encountered here is in my Expect expression, the value from the JSON file is incorrect.

Can someone please help identify the problem here.

    var datafile = require('./Data.json')

    beforeEach(() => {
       browser.get("https://angularjs.org");  
     });  

    describe('Test Angular Page ', () => 
     {

       it('user name should be displayed correctly #try', () =>    
        { 

          var count = datafile.length; 

          for (var i=0; i<count; i++)  
              {
                var value = datafile[i];               
                browser.refresh();
                element(by.model('yourName')).sendKeys(value); 
                (element(by.binding('yourName'))).getText()
                        .then(function (txt)
                               {                                                                        
                           expect(txt).toEqual('Hello '+ value+'!'); 
                          //this is failing                             
})

       }       
      });  

below is my data. json

  [
   "A1","A2","A3"
  ]

below is some part of the result -

 1) Test Angular Page  user name should be displayed correctly #try
  Message:
   Expected 'Hello A1!' to equal 'Hello A3!'.
   Stack:
      Error: Failed expectation
       at D:\Demo_Protractor\test.spec.js:24:44
        at elementArrayFinder_.then (C:\User  s\leenasharma\AppData\Roaming\npm\node_modules\protractor\lib\element.ts:840:22)
    at ManagedPromise.invokeCallback_ (C:\Users\leenasharma\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:1366:14)
    at TaskQueue.execute_   (C:\Users\leenasharma\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2970:14)
    at TaskQueue.executeNext_ (C:\Users\leenasharma\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2953:27)
    at asyncRun (C:\Users\leenasharma\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2813:27)
    at C:\Users\leenasharma\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:676:7
    at process._tickCallback (internal/process/next_tick.js:109:7)
     Message:
        Expected 'Hello A2!' to equal 'Hello A3!'.
      Stack:
      Error: Failed expectation
+4
source share
2 answers
it('user name should be displayed correctly #try', () => {
  var count = datafile.length;
  var value, i;
  for (i = 0; i < count; i++) {
    value = datafile[i];
    browser.refresh();
    element(by.model('yourName')).sendKeys(value);
    (element(by.binding('yourName'))).getText()
      .then(function(txt) {
        expect(txt).toEqual('Hello ' + value + '!');
        //this is failing                             
      })
  }
});

var , . var value for . fuction . getText() , , then , value , , .. A3.

es6 let var, value. let .

it('user name should be displayed correctly #try', () => {
  var count = datafile.length;
  for (let i = 0; i < count; i++) {
    let value = datafile[i];
    browser.refresh();
    element(by.model('yourName')).sendKeys(value);
    (element(by.binding('yourName'))).getText()
      .then(function(txt) {
        expect(txt).toEqual('Hello ' + value + '!');
        //this is failing                             
      })
  }
});

/ getText() then. angular, ?

expect() , ; .

browser.refresh() ? .

+1

, , async.

, expect() :

expect(element(by.binding('yourName'))).getText())).toEqual('Hello '+ value+'!');

+1

Source: https://habr.com/ru/post/1679100/


All Articles