我(新)使用量角器来运行 e2e 黄瓜测试。
我有一个基于 angularJS 的网络应用程序。我正在使用 appium 在真实的 Android 设备上远程运行测试。这是我正在使用的版本:
windows8.1
[email protected] /cdn-cgi/l/email-protection (with submodule seleniu[email protected] /cdn-cgi/l/email-protection)
[email protected] /cdn-cgi/l/email-protection
android device with 4.4.4
我的量角器配置(摘录),对应于https://github.com/angular/protractor/blob/master/docs/browser-setup.md 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 浏览器并导航到我使用“browser.get(url)”提供的 url
问题如下:调用 waitForAngular() 异步等待网站加载并在所有打开的 http 请求上(据我所知),未在手机上成功执行。电话对呼叫没有反应,并且 webdriver 代理返回 500。
对应于https://github.com/angular/protractor/issues/1358 https://github.com/angular/protractor/issues/1358,我知道 waitForAngular() 函数混合在量角器中到调用中
['getCurrentUrl', 'getPageSource', 'getTitle'];
protractor.js 文件中的 waitForAngular() 后面是下面的函数,该函数被代理到手机:
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);
}
};
附加信息:当我在 webdriver(浏览器)对象上引发错误时,错误消息指向量角器目录内的 chromedriver.exe。我不明白为什么错误不是来自 appium 的 chromedriver
所以太棒了;
如果没有成功调用 waitForAngular,我无法(稳定或根本)访问手机页面上的元素,因此不进行测试。也许我在这里误解了一些基本的配置细节,欢迎所有提示。
编辑:在此处添加了 appium 服务器日志:http://pastebin.com/vqBGUdXH http://pastebin.com/vqBGUdXH