Ответ 1
Изменение параметра framework
в конфигурации Protractor на 'jasmine2'
устраняет эту проблему для меня.
Подробнее см. этот поток.
У меня странная ошибка после запуска моих тестов в проекте angular Error: Error while waiting for Protractor to sync with the page: "angular could not be found on the window"
. Конфигурация My Protractor выглядит следующим образом:
require('coffee-script').register();
exports.config = {
seleniumServerJar: './node_modules/protractor/selenium/selenium-server-standalone-2.39.0.jar',
seleniumAddress: 'http://localhost:4444/wd/hub',
capabilities: {
browserName: 'chrome'
//'chromeOptions': {
// 'args': ['--disable-extensions']
//}
},
specs: [
'*_spec.coffee'
],
allScriptsTimeout: 10000000000,
baseUrl: 'http://localhost:9003/',
jasmineNodeOpts: {
isVerbose: false,
showColors: true,
includeStackTrace: true,
defaultTimeoutInterval: 10000000000
}
};
И тест:
loginPage = require './pages/log_in_page'
describe 'Log In', ->
it 'shows after login', ->
loginPage()
.setEmail('[email protected]')
.setPass('a46s75d4as765d4a6s7d54as76d5as74das76d5')
Получить информацию со страницы:
module.exports = ->
@email = element By.css '.test-i-login'
@password = element By.css '.test-i-password'
@setEmail = (name) =>
@email.sendKeys(name)
this
@setPass = (number) =>
@password.sendKeys(number)
this
this
Есть некоторые подобные проблемы в github, но там я не нашел решение, работающее для меня. спасибо для ответа.
Изменение параметра framework
в конфигурации Protractor на 'jasmine2'
устраняет эту проблему для меня.
Подробнее см. этот поток.
В моем сценарии, страница входа не является angular, попробовала сделать это ниже, отработала для меня
browser.driver.findElement(By.id('username')).sendKeys('binnu');
Прототип построен для тестирования приложений Angular, что означает веб-страницы с тегом ng-app
в теле HTML и контроллерах, которые соответствуют коду Angular в файле Javascript.
Причина, по которой Протрактор очень полезен, заключается в том, что приложения Angular выполняются асинхронно, что означает, что они не всегда заканчиваются загрузкой при загрузке веб-страницы. Большинство тестовых фреймворков будут пытаться щелкнуть объекты, набрать вещи и т.д., Прежде чем страница будет полностью готова. Транспортир обнаруживает все процессы Angular, выполняющиеся в фоновом режиме, чтобы вы случайно не делали что-либо, прежде чем все будет готово.
Что говорит вам Protractor, так это то, что он не нашел никаких процессов Angular, запущенных на странице. Ваша страница может работать нормально, но она просто не полагается на Angular способом, который может распознать Protractor.
Это не означает, что Транспортер не может проверить страницу. Вы можете получить доступ к обычным командам WebDriver с помощью browser.driver.any_webdriver_command_here()
. Вам просто не хватает фантастических возможностей синхронизации, которые предлагает Protractor.
Причина, по которой это произошло, потому что у меня неправильная установка пути хромирования. И вот почему я получил это сообщение "angular не удалось найти в окне". Другая проблема, с которой я столкнулся, заключается в том, что мне нужно было запустить webdriver вручную в качестве фонового процесса. Это решает, выполнив правильную задачу gulp (что я сделал не так), что будет выглядеть примерно так:
gulp.task ['test'], ->
runSequence start_server, run_protractor, end_server.
Предположим, что это поможет кому-то, у кого будут похожие (глупые) проблемы.