2015-10-17 74 views
1

我剛剛開始使用量角器。量角器 - 字段存在但不可見 - 元素當前不可操作且不可操作

這是我的問題:

我想登錄網站。當頁面加載時,它會在顯示用戶名和密碼字段以及登錄按鈕之前顯示旋轉的加載輪。 我的問題是,clear()sendKeys()的任何嘗試都會失敗,因爲這些字段在屏幕上還不可見,而量角器正試圖與它們交互。

InvalidElementStateError: invalid element state: Element is not currently interactable and may not be manipulated.

我所注意到的是在頁面的源代碼最初紡車有class='ngscope',一段時間後,它改變class='ng-scope ng-hide'

整個事情是這樣的:

<div ng-show="Model.Busy" class="ng-scope ng-hide"> 
    <div ng-class="{'control--inline': small, 'div-centre': !small}" class="div-centre"> 
    <img ng-src="/assets/img/loading.gif" ng-class="{'very-small-loading': small}" src="/assets/img/loading.gif"> 
</div> 
</div> 

的一塊我使用的代碼是:

describe('Testing', function() { 
    browser.driver.manage().window().maximize(); 

    var username = element(by.model('Model.Username')); 
    var password = element(by.model('Model.Password')); 
    var loginbutton = element(by.css('[ng-click="Model.Logon()"]')); 


    beforeEach(function() { 
    browser.get('MY WEBSITE'); 
    }); 

    it('should log me in', function() { 

// expect($('[ng-show=Model.Busy].ng-hide').isDisplayed()).toBeTruthy(); <-- this fails 


    username.clear(); 
    password.clear() 

    username.sendKeys('1'); 
    password.sendKeys('2'); 

    loginbutton.click(); 

    }); 
}); 

如何使這項工作?

回答

3

您必須等到加載動畫隱藏,然後嘗試使用量角器的內置wait()函數處理頁面上顯示的元素。一種方法是使用presenceOf()功能等待一個元素出現。以下是如何 -

browser.ignoreSynchronization = true; //Its Kendo UI coupled with Angular, so ignore the angular load 

//There are 2 login forms with same attributes so using by.model wouldn't work in this case 
var username = $('#MainView .form-input[name="txtUsername"]'); 
var password = $('#MainView .form-input[name="txtPassword"]'); 
var loginbutton = $('[ng-click="Model.Logon()"]'); 
var EC = protractor.ExpectedConditions; 

browser.wait(EC.visibilityOf(username), 20000).then(function(){ 
    username.clear().then(function(){ 
     username.sendKeys('1'); 
    }); 
    password.clear().then(function(){ 
     password.sendKeys('2'); 
    }); 
    loginbutton.click(); 
}); 

希望它有幫助。

+0

嗨Girish。不幸的是,這並沒有幫助。現在發生的情況是動畫在browser.wait(10s)中給出的持續時間「掛起」,然後我得到相同的錯誤。如果我只是給你的網站地址,它會更容易:https://client.compliancecentre.co.uk請看看,你是否能夠發送密碼到用戶名和密碼,然後點擊登錄按鈕...(注意:頁面加載速度非常快,旋轉輪僅顯示幾秒鐘,但它在那裏) – Alichino

+0

@Alichino如果是這種情況,那麼等待用戶名或密碼字段是有道理的。使用此解決方案更新答案。我根本無法看到該字段,也許可以通過某種javscript禁用網頁上的自動化功能。你能檢查一下嗎? –

+0

@Alichino我能夠重新創建您的問題,似乎網頁在客戶端使用Kendo UI庫。更新了代碼以包含可用的代碼。如果您仍有問題,請告訴我。謝謝 –

相關問題