2017-01-28 43 views
1

我簡化我需要測試這個代碼:我可以訪問量角器測試中的ng-app值嗎?

<html ng-app="home" ng-strict-di=""><head>.... 

,我是運行一些量角器測試,我想訪問NG-應用程序的價值,所以我可以比較,看看哪些應用程序在每個運行頁。

我已經試過

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. 

所以我有點困惑,我怎樣才能從量角器訪問我的角度應用程序名稱以測試獨立於本地化運行的應用程序標籤離子。

任何洞察到這個謎?

回答

2

它看起來像是神奇的,當你命令你的想法來制定問題時,答案就來了。

的伎倆是讓HTML作爲元素

var appNameHtml = element(by.xpath('/html')) 

,然後,在測試中,獲得了NG-應用屬性,並使用它:

appNameHtml.getAttribute('ng-app').then(function(value) { 
    expect(value).toBe('home'); 
}); 

和賓果遊戲,你可以提取應用程序名稱。

也許這是一個非常基本的問題,但它讓我瘋狂:)

2

你的答案就足夠我想在這種情況下。但只是想強調一種更通用的方法,以便ng-app不僅可以位於html元素上。

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

然後想補充一點。您無需解決getAttribute對其價值的期望。 Jasmine解決了你的承諾。你可以有這樣的事情

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

+0

謝謝你,你的回答給了一個更好地瞭解如何處理的承諾。 :) – shadowcharly

+0

很高興它幫助! – AdityaReddy

相關問題