Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Protractor E2E angular "angular could not be found on the window"

I have a strange error after running my tests in angular project Error: Error while waiting for Protractor to sync with the page: "angular could not be found on the window". My Protractor configuration looks like this:

require('coffee-script').register();

exports.config = {
  seleniumServerJar: './node_modules/protractor/selenium/selenium-server-standalone-2.39.0.jar',
  seleniumAddress: 'http://localhost:4444/wd/hub',

  capabilities: {
    browserName: 'chrome'
    //'chromeOptions': {
    //  'args': ['--disable-extensions']
    //}
  },

  specs: [
    '*_spec.coffee'
  ],

  allScriptsTimeout: 10000000000,
  baseUrl: 'http://localhost:9003/',

  jasmineNodeOpts: {
    isVerbose: false,
    showColors: true,
    includeStackTrace: true,
    defaultTimeoutInterval: 10000000000
  }
};

And test:

loginPage = require './pages/log_in_page'

describe 'Log In', ->

      it 'shows after login', ->
        loginPage()
        .setEmail('[email protected]')
        .setPass('a46s75d4as765d4a6s7d54as76d5as74das76d5')

Get info from page:

module.exports = ->
      @email = element By.css '.test-i-login'
      @password = element By.css '.test-i-password'

      @setEmail = (name) =>
        @email.sendKeys(name)
        this

      @setPass = (number) =>
        @password.sendKeys(number)
        this
      this

There're some similar issues on github, but there I didn't find a solution working for me. Thx for answering.

like image 494
Oleksandr Verhun Avatar asked Jan 29 '15 13:01

Oleksandr Verhun


3 Answers

Changing framework option in Protractor config to 'jasmine2' fixed this issue for me.

See this thread for further information.

like image 83
mms27 Avatar answered Nov 16 '22 01:11

mms27


In my scenario, login page is non angular, tried the below way, worked out for me

browser.driver.findElement(By.id('username')).sendKeys('binnu');
like image 40
Binnu Jesudasan Gudapati Avatar answered Nov 16 '22 01:11

Binnu Jesudasan Gudapati


Protractor is built to test Angular applications, meaning web pages that have an ng-app tag in the body of the HTML and controllers that correspond to Angular code in a Javascript file.

The reason Protractor is so useful is that Angular applications run asynchronously, meaning that they're not always finished loading when the web page loads. Most testing frameworks would try to click things, type things, etc. before the page is completely ready. Protractor detects all the Angular processes running in the background so that you don't accidentally do something before everything is ready.

What Protractor is telling you is that it didn't find any Angular processes running on the page. Your page might work fine, but it just doesn't rely on Angular in a way that Protractor can recognize.

That doesn't mean Protractor can't test the page. You can access regular WebDriver commands using browser.driver.any_webdriver_command_here(). You'll just be missing out on the fantastic synchronizing capabilities that Protractor offers.

like image 37
Isaac Lyman Avatar answered Nov 16 '22 02:11

Isaac Lyman