在窗口上找不到量角器E2E角度和角度#34;

时间:2015-01-29 13:53:08

标签: angularjs protractor e2e-testing

在角项目Error: Error while waiting for Protractor to sync with the page: "angular could not be found on the window"中运行我的测试后出现了一个奇怪的错误。我的量角器配置如下所示:

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
  }
};

并测试:

loginPage = require './pages/log_in_page'

describe 'Log In', ->

      it 'shows after login', ->
        loginPage()
        .setEmail('test@dispatch.me')
        .setPass('a46s75d4as765d4a6s7d54as76d5as74das76d5')

从页面获取信息:

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

在github上有一些类似的问题,但在那里我找不到适合我的解决方案。请回答。

4 个答案:

答案 0 :(得分:14)

将Protractor配置中的framework选项更改为'jasmine2'可以解决此问题。

有关详细信息,请参阅this thread

答案 1 :(得分:6)

在我的场景中,登录页面是非角色的,尝试以下方式,为我解决

browser.driver.findElement(By.id('username')).sendKeys('binnu');

答案 2 :(得分:5)

Protractor用于测试Angular应用程序,这意味着在HTML正文中具有ng-app标记的网页和与Javascript文件中的Angular代码对应的控制器。

Protractor非常有用的原因是Angular应用程序以异步方式运行 ,这意味着当网页加载时它们并不总是完成加载。在页面完全准备好之前,大多数测试框架会尝试单击事物,键入内容等。量角器检测到在后台运行的所有Angular进程,这样你就不会在一切准备就绪之前不小心做某事。

Protractor告诉你的是,它没有找到在页面上运行的任何Angular进程。您的页面可能正常工作,但它不会以Protractor可识别的方式依赖Angular。

这并不意味着量角器无法测试页面。您可以使用browser.driver.any_webdriver_command_here()访问常规WebDriver命令。您只是错过了Protractor提供的出色的同步功能。

答案 3 :(得分:2)

之所以发生这种情况,是因为我的chromedriver路径安装错误了。这就是为什么我得到这个消息“在窗户上找不到角度”。我遇到的另一个问题是,我需要手动运行webdriver作为后台进程。这解决了通过制定正确的gulp任务(我做错了),看起来像这样:

gulp.task ['test'], ->
   runSequence start_server, run_protractor, end_server.

假设它会帮助那些有类似(愚蠢)问题的人。