首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >量角器-无法读取未定义的属性“$$testability”

量角器-无法读取未定义的属性“$$testability”
EN

Stack Overflow用户
提问于 2017-05-10 01:32:42
回答 4查看 4.1K关注 0票数 3

我收到一个错误,内容如下:

代码语言:javascript
复制
"Error while waiting for Protractor to synce with the page: "Cannot read property '$$testability' of undefined"

下面是我的测试。

代码语言:javascript
复制
describe('On the MyMoments page', function(){  

    beforeEach(function() {
        var editLocationText = 'Location';

        browser.driver.get('http://192.168.0.6:8100/#/page1/myMoments');
    });

    it('The edit button should work', function() {
        browser.driver.get('http://192.168.0.6:8100/#/page1/myMoments').then(function() {
            // browser.waitForAngular();
            browser.getCurrentUrl().then(function(url) {

            });
        });


    });
});

这是我的配置文件:

代码语言:javascript
复制
exports.config = {  
    capabilities: {
        'browserName': 'chrome',
        'chromeOptions': {                
            args: ['--disable-web-security']
        } 
    },
    baseUrl: 'http://192.168.0.6:8100',
    specs: [
    '*.test.js'
    ],
    jasmineNodeOpts: {
        isVerbose: true,
    }
};

我不认为这与我的测试有关,因为我的测试非常简单。以前有人遇到过这个问题吗?我有点卡住了。

谢谢。

编辑:

将我的量角器版本降级到4.0.14,以修正此错误。现在我得到了:

代码语言:javascript
复制
"Failed: Error while waiting for Protractor to sync with the page: "[ng:test] no injector found for element argument to getTestability/http://errors.angularjs.org/1.5.3/ng/test"

如果有人知道这是什么或者如何解决这件事,请告诉我!

谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-05-10 04:30:03

这是一个已知的问题,在量角器,见这里。正如问题中提到的,这是因为如果没有传递值,但当前返回未定义的值,则browser.angularAppRoot()将返回app根的当前值。一个新的版本即将发布,应该可以解决这个问题。

希望它能帮上忙

票数 2
EN

Stack Overflow用户

发布于 2017-10-10 23:40:50

虽然它有时是由根目录中没有html标记的文档引起的,但“无法读取未定义的属性'$$testability‘”更有可能表现为另一个错误的症状,该错误阻止了页面的加载,或与任何原因未加载的页面的任何交互。

尝试在抛出错误的行上方使用browser.sleep,以便给页面加载时间。

如果页面尚未准备好量角器,则用于等待特定条件的browser.ExpectedConditions子句可以抛出此错误。

有时,硬编码的睡眠是无法避免的。

为了诊断和修复它,

  • 将browser.enterRepl();放到代码中,就在抛出$$testability错误的行前面。
  • 如果仍然引发$$testability错误,那么将browser.enterRepl();向上移动几行
  • 每次enterRepl()在没有$$testability错误的情况下被触发,然后移动browser.enterRepl();向下移动一行
  • 最后,当enterRepl被移到引起错误的行的正下方时,您现在可能会看到另一条更有意义的错误消息。
  • 在导致该错误的行之前放置browser.sleep()或其他代码来修复您的特定问题。
票数 1
EN

Stack Overflow用户

发布于 2017-10-04 11:34:43

将浏览器从chrome更改为firefox对我很有帮助。

代码语言:javascript
复制
// conf.js
exports.config = {
framework: 'jasmine',
seleniumAddress: 'http://localhost:4444/wd/hub',
  capabilities: {
  'browserName': 'firefox'
},
specs: ['login-spec.js']
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43882242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档