我简化了我需要测试的代码:
<html ng-app="home" ng-strict-di=""><head>....
我正在运行一些量角器测试,我想访问ng-app的值,这样我就可以比较并查看每个页面中正在运行的应用程序。
我试过了
var appName = element(by.xpath('/html/@ng-app'))
但它没有返回可用的承诺或文本,我可以与
进行比较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.
所以我有点困惑,因为我如何从量角器访问我的角度应用程序名称,以测试独立于标签本地化运行的应用程序。
对这个谜团的任何见解?
答案 0 :(得分:2)
似乎神奇地说,当你命令你的想法来提出问题时,答案就会出现在你身上。
诀窍是将html作为元素
var appNameHtml = element(by.xpath('/html'))
然后,在测试中,获取ng-app属性并使用它:
appNameHtml.getAttribute('ng-app').then(function(value) {
expect(value).toBe('home');
});
宾果游戏,您可以提取应用名称。
也许这是一个非常基本的问题,但这让我感到疯狂:)
答案 1 :(得分:2)
在这种情况下,我的答案就足够了。但只是想强调更通用的方法,以防ng-app
不仅可能驻留在html
元素上。
var elementWithNgApp = element(by.css('*[ng-app]'))
然后又想补充一点。您无需解决getAttribute
对其价值有所期望的承诺。 Jasmine
解决了对你的承诺。你可以有这样的东西
expect(elementWithNgApp.getAttribute('ng-app')).toBe('home');