2017-05-05 85 views
1

我的公司正在開始使用Angular構建我們所有的網站,並且在與Java Webdriver一起瀏覽這些新頁面之後,我決定給量角器一個鏡頭。如何從無角度的登錄頁面轉換到角度主頁

登錄頁面不是Angular,但我想我通過設置ignoreSynchronizatyion = true來解決這個問題。

我想要做的只是確認登錄後我們網站主頁標題的存在,但主頁在Angular中。所以我嘗試了幾種不同的設置ignoreSynchronizatyion = false,但我顯然做錯了什麼。

describe('angular web navigation', function() { 

it('should login and confirm title', function() { 
browser.ignoreSynchronization = true; 
browser.get('https://website.com/login') 

browser.driver.findElement(by.name('username')).sendKeys("123456"); 
browser.driver.findElement(by.name('submit')).click; 

browser.ignoreSynchronization = false; 
expect(element(by.model('title')).getText()). 
    toEqual('Expected Title'); 
    }); 
}); 

有關在非Angular頁面上登錄並確認存在Angular元素的任何提示?

+0

是URL後也提交變化?如果是這樣,您可以等待url更改,然後啓用同步並獲取文本 – wswebcreation

+0

最終如何解決這個問題?我有完全相同的情況,我有它的主要工作,但你有什麼「期望(元素(by.model('標題'....」我試圖在我的角頁面上做同樣的事情後非 - 角色登錄,我得到「超時等角度任務完成」或「沒有找到這樣的元素」 –

+1

@ S.Huston抱歉的格式化...我沒有browser.driver.findElement(by.name( 'submit'))。click()。然後(function(){browser.ignoreSynchronization = false; }); – rHenderson

回答

2

首先,你需要調用click()方法,替換:

browser.driver.findElement(by.name('submit')).click; 

有:

browser.driver.findElement(by.name('submit')).click(); 

然後,如果開啓同步功能不起作用這種方式,做在click()承諾解決步驟:

browser.driver.findElement(by.name('submit')).click().then(function() { 
    browser.ignoreSynchronization = false; 
}); 
0

使用browser.driver.findElement('..')browser.ignoreSynchronization = true;是雙倍的。請參閱docs here。 如果您需要自動化非角頁,你有兩個選擇:

  1. 如果你還是想用量角器語法(element(by.css('')),你可以使用browser.ignoreSynchronization = true;。這將禁止在非Angular頁面上等待Angular。這導致在這個例子中

describe('angular web navigation', function() { 
 
    it('should login and confirm title', function() { 
 
    browser.ignoreSynchronization = true; 
 
    browser.get('https://website.com/login'); 
 

 
    element(by.name('username')).sendKeys("123456"); 
 
    element(by.name('submit')).click() 
 
     .then(function() { 
 
     browser.ignoreSynchronization = false; 
 
     }); 
 

 
    expect(element(by.model('title')).getText()) 
 
     .toEqual('Expected Title'); 
 
    }); 
 
});

  • 如果你不想使用browser.ignoreSynchronization = true;,我個人比較喜歡,因爲它可以給一些麻煩與未來版本的量角器,它是Angular和非Angular代碼之間的更好的區別,您還可以使用「Vanilla WebDriver」browser-object,參見here
  • describe('angular web navigation', function() { 
     
        it('should login and confirm title', function() { 
     
        browser.driver.get('https://website.com/login'); 
     
    
     
        browser.driver.findElement(by.name('username')).sendKeys("123456"); 
     
        browser.driver.findElement(by.name('submit')).click(); 
     
    
     
        expect(element(by.model('title')).getText()) 
     
         .toEqual('Expected Title'); 
     
        }); 
     
    });