【问题标题】:"angular is not defined" error while executing Protractor test on angular application stored in Liferay对存储在 Liferay 中的角度应用程序执行量角器测试时出现“角度未定义”错误
【发布时间】:2015-04-09 12:28:50
【问题描述】:

我在 Ubuntu 14.04 虚拟主机上运行,​​我正在尝试使用 PROTRACTOR 和托管在“Liferay”中的应用程序创建一些 E2E 测试。

对于登录部分(不需要角度),使用量角器的测试正常,页面登录并正确导航,但是当我尝试在基于 angularjs 的应用程序上打开“下拉”菜单时,使用以下内容代码:

<select class = "form-control menu-select ng-pristine ng-valid"
ng-model = "topTitlesData.topFiveDateRange"
name = "topFiveDateRange"
ng-options = "range.name for range in        topTitlesData.topFiveDateRangeValues"
ng-change = "" > < option value = "0" > Last day < /option><option value="1">Last 5 days</option > < option value = "2" > Last 7 days < /option><option value="3">Last 30 days</option > < option value = "4" > last 90 days < /option></select>

我收到了这个错误日志:

UnknownError:未知错误:未定义角度

This is the test script on js:


describe('pages with login', function() {
  it('should log in with a non-Angular page and select and option', funcion() {
    browser.ignoreSynchronization = true;
    browser.get('***************');
    element(by.id('_58_login')).clear();
    element(by.id('_58_login')).sendKeys('*******');
    expect(element(by.id('_58_login')).getAttribute('value')).toEqual('*****');
    element(by.id('_58_password')).sendKeys('*****', protractor.Key.ENTER);
    browser.get('***************');
    //browser.ignoreSynchronization = false;
    var selects = element.all(by.model('topTitlesData.topFiveDateRange'));
    expect(selects.count()).toEqual(5);
  });
});

我想知道,我错过了什么?

我已经安装和更新了 nodejs、量角器、webadmin-manager、jdk7.*

【问题讨论】:

  • ng - modelng - optionsng - change 中的空格是否有错别字?
  • 是的,这些是错别字。我现在会纠正他们..
  • 但我还是有同样的问题,这些错别字是我打开票时创建的
  • UnknownError: unknown error: angular is not defined 几乎总是在 Angular 未初始化时发生,因为它在某处缺少依赖项。你能发布更多出现此错误的 HTML 页面吗?

标签: javascript node.js ubuntu protractor e2e-testing


【解决方案1】:

问题可能是您的测试在浏览器页面完全加载之前正在运行。 angular 全局变量尚未创建。您可以通过在您的 protractor.conf.js 文件的 onPrepare 方法中添加以下行来确保在测试开始之前已加载所有内容:

browser.driver.get(browser.baseUrl);

这将在任何测试开始之前导航到页面并确保所有内容都已加载。

【讨论】:

  • 我在使用 Selenium Webdriver 测试时发现了同样的错误。感谢您的解释。就我而言,我刚刚在用于检测是否加载了 angular 的脚本之前添加了一个 Thread.sleep(200); ,并且一切正常。
【解决方案2】:

谢谢,问题是测试没有等到 angular 加载到页面...所以我用“Grunt”、“Yeoman”和 Ruby +“ruby-compass”的应用程序设置了一个本地主机宝石并避免了生命射线。我也设置了

allScriptsTimeout: 5000000,

在 config.js 文件中,现在测试运行正常。

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 2015-03-02
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    相关资源
    最近更新 更多