Jestem (niedawno) przy użyciu kątomierza do uruchamiania testów ogórka e2e. Mam aplikację internetową opartą na angularJS. Używam appium do zdalnego uruchamiania testu na prawdziwym urządzeniu z Androidem. Oto wersje Używam:Kątomierz waitForAngular() kończy się niepowodzeniem w aplikacji webowej kątowej (appium/chrome na prawdziwym urządzeniu)
windows8.1
[email protected] (with submodule [email protected])
[email protected]
android device with 4.4.4
moja konfiguracja kątomierz (ekstrakty), odpowiadające 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
};
Jak widać, mam otrzymuje kątomierza webdriver URL z appium webdriver. I rozpocząć appium z poleceń z „appium &”, a następnie uruchomić test z „protactor cucumbertest.conf”
Telefon otwiera przeglądarkę Chrome i przejście do adresu URL daję z „browser.get (URL)”
problem jest następujący: waitForAngular call(), która jest asynchronicznie czekając na stronie internetowej, aby załadować i na wszystkich otwartych żądanie hTTP (o ile rozumiem), nie jest wykonywane z powodzeniem w telefonie. telefon nie reaguje na wezwanie i proxy webdriver zwraca 500.
Odpowiadający https://github.com/angular/protractor/issues/1358, i rozumie się, że funkcja waitForAngular() miesza się kątomierz do połączenia
['getCurrentUrl', 'getPageSource', 'getTitle'];
Za waitForAngular () w protractor.js plików jest poniższa funkcja, która jest przekierowywane do telefonu:
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);
}
};
Dodatkowe informacje: kiedy STIM zlokalizować błąd w obiekcie webdriver (przeglądarka), komunikat o błędzie wskazuje na chromeedriver.exe wewnątrz katalogu kątomierza. Nie rozumiem, dlaczego błąd nie pochodzi od chromedriver appium
tak tldr; bez udanego połączenia waitForAngular, nie mogę (stabilnie lub w ogóle) uzyskać dostęp do elementów na stronie telefonu, więc nie testuj. może nieporozumienie niektórych podstawowych szczegółów konfiguracji tutaj, wszystkie wskazówki są mile widziane.
edit: dodaje logi serwera appium tutaj: http://pastebin.com/vqBGUdXH
Twoje możliwości są poprawne, a serwer Appium działa poprawnie. Zwrócone 500 jest po przetworzeniu wszystkich poleceń. Spróbuj opublikować na discuss.appium.io otrzymasz najlepszą odpowiedź tam – sheeptest