Я (недавно) использовал транспортир для запуска тестов на огурец e2e. У меня есть веб-приложение с угловым основанием. Я использую appium для удаленного запуска теста на реальном устройстве Android. Вот версии я использую:Ожидание утяжелителяForAngular() не работает на angular-webapp (appium/chrome на реальном устройстве)
windows8.1
[email protected] (with submodule [email protected])
[email protected]
android device with 4.4.4
мой конфигурации транспортир (экстракты), соответствующие https://github.com/angular/protractor/blob/master/docs/browser-setup.md:
currentDeviceUDID = (...);
var appToTestURL = 'http://my.website.com:9000/app/index.html';
exports.config = {
seleniumAddress: 'http://localhost:4723/wd/hub';
chromeOnly: false,
specs: ['features/sample.feature'],
capabilities: {
browserName: 'chrome',
'appium-version': '1.0',
platformName: 'Android',
platformVersion: '4.4.4',
udid: currentDeviceUDID
},
baseUrl: appToTestURL
framework: 'cucumber',
cucumberOpts: {
require: 'features/stepDefinitionsSample.js',
tags: '@dev',
format: 'progress'
},
// configuring wd in onPrepare
onPrepare: function() {
var wd = require('wd'),
protractor = require('protractor'),
wdBridge = require('wd-bridge')(protractor, wd);
wdBridge.initFromProtractor(exports.config);
},
allScriptsTimeout: 30000,
getPageTimeout: 30000
};
Как вы можете видеть, я заменил WebDriver URL транспортира в с appium webdriver. я запускаю appium из командной строки с помощью «appium &», затем я запускаю тест с помощью «protactor cucumbertest.conf»
Телефон открывает браузер Chrome и переходит к URL-адресу, я предоставляю его с помощью «browser.get (url)»,
проблема заключается в следующем: waitForAngular вызова(), который асинхронно ждет веб-сайта для загрузки и по запросу всех открытых HTTP (насколько я понимаю), не выполняется успешно по телефону. телефон не реагирует на вызов, и WebDriver прокси возвращает 500.
В соответствии с https://github.com/angular/protractor/issues/1358, я понял, что функция waitForAngular() смешивают в транспортире в вызовы
['getCurrentUrl', 'getPageSource', 'getTitle'];
За waitForAngular () в файле protractor.js функция ниже, которая проксируется на телефон:
functions.waitForAngular = function(selector, callback) {
var el = document.querySelector(selector);
try {
if (angular.getTestability) {
angular.getTestability(el).whenStable(callback);
} else {
angular.element(el).injector().get('$browser').
notifyWhenNoOutstandingRequests(callback);
}
} catch (e) {
callback(e);
}
};
Дополнительная информация: когда я стим ulate ошибка в объекте webdriver (browser), сообщение об ошибке указывает на chromedriver.exe внутри каталога транспортировщика. я не понимаю, почему ошибка не из хромированного указателя appium
so tldr; без успешного вызова waitForAngular, я не могу (стабильный или вообще) доступ к элементам доступа на странице на телефоне, поэтому не тестируем. возможно, я неправильно понимаю некоторые основные детали конфигурации здесь, все намеки приветствуются.
редактирования: добавлен сервер журналы appium здесь: http://pastebin.com/vqBGUdXH
Ваши возможности правильные, и сервер приложений работает правильно. 500 возвращенных после обработки всех команд. Попробуйте опубликовать на обсуждении.appium.io вы получите лучший ответ там – sheeptest