17

在 angular project 中运行测试后出现一个奇怪的错误 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

4 回答 4

14

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

See this thread for further information.

于 2015-04-21T15:32:28.997 回答
6

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

browser.driver.findElement(By.id('username')).sendKeys('binnu');
于 2015-05-23T11:32:49.470 回答
5

Protractor 是为测试 Angular 应用程序而构建的,这意味着ng-app在 HTML 正文中具有标签的网页以及与 Javascript 文件中的 Angular 代码相对应的控制器。

Protractor 如此有用的原因是 Angular 应用程序异步运行,这意味着当网页加载时它们并不总是完成加载。大多数测试框架会在页面完全准备好之前尝试单击内容、键入内容等。Protractor 检测所有在后台运行的 Angular 进程,这样您就不会在一切准备就绪之前意外地做某事。

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

这并不意味着 Protractor 不能测试页面。您可以使用browser.driver.any_webdriver_command_here(). 您将错过 Protractor 提供的出色同步功能。

于 2015-01-29T21:40:06.853 回答
2

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

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

假设它会帮助遇到类似(愚蠢)问题的人。

于 2015-01-30T09:45:29.780 回答