Angularjs 我可以在量角器测试中访问ng app值吗?

Angularjs 我可以在量角器测试中访问ng app值吗?,angularjs,protractor,angularjs-e2e,e2e-testing,Angularjs,Protractor,Angularjs E2e,E2e Testing,我将需要测试的代码简化为: <html ng-app="home" ng-strict-di=""><head>.... 但它并没有返回一个我可以比较的有用的承诺或文本 appName.getText().then(function(name) { expect(name).toBe('home') }); 但量角器抱怨说: InvalidSelectorError: invalid selector: The result of the xp

我将需要测试的代码简化为:

<html ng-app="home" ng-strict-di=""><head>....
但它并没有返回一个我可以比较的有用的承诺或文本

appName.getText().then(function(name) {
      expect(name).toBe('home')
      });
但量角器抱怨说:

InvalidSelectorError: invalid selector: The result of the xpath expression "/html/@ng-app" is: [object Attr]. It should be an element.
所以我有点困惑,我如何从量角器访问我的angular应用程序名称,以测试独立于标签本地化运行的应用程序


对这个谜团有什么洞察吗?

而且似乎很神奇,当你整理你的思想来阐述这个问题时,答案就出现了

诀窍是将html作为元素

var appNameHtml = element(by.xpath('/html'))
然后,在测试中,获取ng app属性并使用它:

appNameHtml.getAttribute('ng-app').then(function(value) {
    expect(value).toBe('home');
});
宾果游戏,你可以提取应用程序名


也许这是一个非常基本的问题,但它让我发疯:)

而且似乎不可思议的是,当你命令你的思想去阐述这个问题时,答案就出现了

诀窍是将html作为元素

var appNameHtml = element(by.xpath('/html'))
然后,在测试中,获取ng app属性并使用它:

appNameHtml.getAttribute('ng-app').then(function(value) {
    expect(value).toBe('home');
});
宾果游戏,你可以提取应用程序名


也许这是一个非常基本的问题,但它让我发疯:)

我想在这种情况下,你的回答就足够了。但我只是想强调一种更通用的方法,以防
ngapp
可能不仅仅驻留在
html
元素上

var-elementWithNgApp=element(by.css('*[ng-app]'))

然后又想补充一件事。您无需解析
getAttribute
的承诺,即可对其值进行expect<代码>茉莉花为您解析承诺。你可以吃这样的东西


expect(elementWithNgApp.getAttribute('ng-app')).toBe('home')

我想在这种情况下,你的答案就足够了。但我只是想强调一种更通用的方法,以防
ngapp
可能不仅仅驻留在
html
元素上

var-elementWithNgApp=element(by.css('*[ng-app]'))

然后又想补充一件事。您无需解析
getAttribute
的承诺,即可对其值进行expect<代码>茉莉花
为您解析承诺。你可以吃这样的东西


expect(elementWithNgApp.getAttribute('ng-app')).toBe('home')

谢谢,您的回答让您更好地理解了如何处理承诺。:)很高兴这有帮助!!谢谢你,你的回答让我更好地理解了如何处理承诺。:)很高兴这有帮助!!