經過大量的研究和修補,我似乎無法真正讓我的量角器測試做其他任何事情,除了有角度相關的錯誤,即使我使用瀏覽器來避免檢測到Angular。用角度打開的非角度頁面 - 角度未定義使用ignoreSynchronization或等待角度沒有
該測試涉及一個Angular應用程序,在其中打開下拉菜單,然後單擊控制檯的鏈接;控制檯在單獨的窗口中打開非角度管理頁面。
因此,基於許多翔實的SO帖子,我發現,我第一次用這個...
browser.driver.getAllWindowHandles().then(function(handles) {
browser.driver.switchTo().window(handles[1]).then(function() {
//expect for new window here
});
});
這似乎工作,因爲我可以通過repl
到窗口很容易地。 的問題是,當添加以下任一...
browser.driver.getAllWindowHandles().then(function(handles) {
browser.driver.switchTo().window(handles[1]).then(function() {
expect(browser.getLocationAbsUrl()).toContain('/console/login.jsp');
expect(browser.driver.findElement(By.css('th.login')).getText()).toEqual('Login');
});
});
一想到查詢的網址和其他檢查頁面上的元素header
,這是一個表頭。當我運行它,我得到如下:
Error while waiting for Protractor to sync with the page: "angular could not be found on the window"
當我決定使用browser.ignoreSynchronization = true
,無論是在功能,或在beforeEach
,帶有或不帶有以下afterEach
其設置爲false,我得到如下:
JavascriptError: angular is not defined
我似乎無法得到任何「有用」的錯誤來幫我調試它,並在repl
努力沒有幫助,因爲我得到了同樣的問題。 爲了更全面,試圖找到我的URL而沒有得到第二個窗口會給我的根,另一個會失敗。 只是做一個或另一個會導致同樣的問題。 更改爲常規語法(element(by.css...)
)不會改變事情。
您嘗試獲取URL的方法並不是非常'AngularJS',例如,將'$ state'注入到您的Angular測試控制器然後從那裏獲取url $ state會更簡單.href()例如。 您還可以使用「元素」訪問DOM元素,這裏是什麼地方你可以找到它使用: http://stackoverflow.com/questions/19429025/how-to-access-a-dom-element-in -a-angular-directive – cullimorer