Tôi (mới) sử dụng thước đo góc để chạy thử nghiệm dưa chuột e2e. Tôi có một ứng dụng web dựa trên angularJS. Tôi đang sử dụng appium để chạy thử nghiệm từ xa trên một thiết bị Android thực sự. Dưới đây là các phiên bản tôi đang sử dụng:waitForAngular của Protractor() thất bại trên angular-webapp (appium/chrome trên thiết bị thực)
windows8.1
[email protected] (with submodule [email protected])
[email protected]
android device with 4.4.4
cấu hình thước đo của tôi (chiết xuất), tương ứng với 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
};
Như bạn thấy, tôi đã thay thế url webdriver của thước đo góc với appium webdriver. tôi bắt đầu appium từ dòng lệnh với "appium &", sau đó tôi chạy thử nghiệm với "protactor cucumbertest.conf"
Điện thoại mở trình duyệt chrome và điều hướng đến url tôi đưa nó bằng "browser.get (url)"
vấn đề là như sau: các waitForAngular gọi(), được đồng bộ chờ đợi cho các trang web để tải và trên tất cả các yêu cầu http mở (như xa như tôi hiểu), không được thực hiện thành công trên điện thoại. điện thoại không phản ứng với các cuộc gọi, và proxy webdriver trả về một 500.
Tương ứng với https://github.com/angular/protractor/issues/1358, tôi hiểu rằng waitForAngular() hàm được trộn lẫn trong thước đo thành các cuộc gọi
['getCurrentUrl', 'getPageSource', 'getTitle'];
Đằng sau waitForAngular () trong protractor.js tập tin là chức năng dưới đây, được uỷ nhiệm vào điện thoại:
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);
}
};
thông tin bổ sung: khi tôi Stim ulate lỗi trên đối tượng trình duyệt web (trình duyệt), thông báo lỗi trỏ tới chromedriver.exe bên trong thư mục thước đo góc. tôi không hiểu tại sao lỗi không phải từ chromiumriver của appium
so tldr; mà không có thành công gọi waitForAngular, tôi không thể (ổn định hoặc ở tất cả) các yếu tố truy cập trên trang trên điện thoại, do đó, không thử nghiệm. có lẽ im hiểu lầm một số chi tiết cấu hình cơ bản ở đây, tất cả các gợi ý đều được chào đón.
chỉnh sửa: thêm appium máy chủ bản ghi ở đây: http://pastebin.com/vqBGUdXH
Khả năng của bạn là chính xác và máy chủ ứng dụng hoạt động chính xác. 500 trả về là sau khi tất cả các lệnh được xử lý. Hãy thử đăng bài trên discussion.appium.io bạn sẽ nhận được phản hồi tốt nhất ở đó – sheeptest