【发布时间】:2017-05-18 12:13:17
【问题描述】:
我们有一个 Angular 1.5 应用程序,它有一个登录屏幕,应用程序代码和我们的测试都没有改变。我们使用量角器(带有 grunt-protractor 等)
版本:
"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').then(done) promise (jasmine 语法) 获取测试结束时调用的 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); })});
我们没有改变依赖版本或在我们的环境中什么都没有,突然没有任何效果,测试只通过了登录阶段,然后因为找不到元素而失败(我猜)并卡住直到 jasmine 抛出超时异常
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”之外等待。 如果我要在控制台调试器(chrome)中查找元素,我会正确获取元素...... 我们还尝试调试并在 repl 模式下打印
element(by.css('.add-new-type')).getText()
并且行为是相同的 - 没有/没有响应
有什么帮助!
【问题讨论】:
标签: angularjs selenium protractor automated-tests