我們有一個具有登錄屏幕的Angular 1.5應用程序,應用程序代碼和我們的測試中都沒有更改。我們用量角器(與咕嚕,量角器等)
版本:不能讓量角器等待現有元素可點擊(condition.elementToBeClickable)
"dependencies": {
"async": "^0.9.0",
"chalk": "^1.1.1",
"fs-extra": "^0.24.0",
"grunt": "~0.4.5",
"grunt-contrib-jshint": "^0.10.0",
"grunt-protractor-runner": "^4.0.0",
"grunt-protractor-webdriver": "^0.2.5",
"jshint-stylish": "^1.0.0",
"load-grunt-tasks": "~3.1.0",
"lodash": "^2.4.1",
"log4js": "^0.6.21",
"protractor": "^4.0.11",
"selenium-webdriver": "^3.0.1"
}
我們所有的測試都採用以下格式:
- 登錄到應用程序和睡眠
的測試(它)。它會從browser.sleep('1000'),然後(完成)promise(茉莉花語法)中得到done()函數。
describe('login', function() { browser.get('/'); components.login.loginDefault(); console.log('done login'); browser.driver.manage().window().maximize(); // just in case the driver wont reach the '.add-new-type' button browser.sleep(1000); }); describe('post login', function() { it('just a test for after user loged in', function (done) { console.log('post login'); const ec = protractor.ExpectedConditions; const getStarted = element(by.css('.add-new-type')); // just a button appears on the next page console.log('getStarted ' + JSON.stringify(getStarted)); browser.wait(ec.elementToBeClickable(getStarted), 5000); console.log('post wait'); browser.sleep(5000).then(done); })});
我們並沒有改變依賴版本或沒有在我們的環境,突然沒有什麼作品,測試只有通過登錄階段,然後失敗沒有找到元素(我猜),並卡住,直到茉莉拋出超時異常
Session created: count=1, browserName=chrome, chromeOptions={args=[--no-sandbox, --test-type=browser, --disable-extensions], prefs={download={default_directory=./e2e/tmp, prompt_for_download=false}}}
node path changed
done login
Started
post login
F
在登錄後測試只是一個例子,我們嘗試過其他方法來使駕駛員旁邊等待等待「ExpectedConditions」。 如果我會尋找在控制檯調試器(鉻)的元素,我會得到正確的元素... 我們還試圖調試和REPL模式下打印
element(by.css('.add-new-type')).getText()
和行爲是一樣的 - 沒有/沒有迴應
會有幫助!
非常感謝您的回覆,不幸的是,這並沒有奏效,事情是那些測試之前完美運行,我們還懷疑測試不會等待頁面加載並且目前沒有找到方法得到它的工作 – lironn
帽子沒有幫助,但謝謝,我學到了一些新的 – lironn