Заполните поле пароля в подсказке iTunes на UITest
Я пишу UITest для своего приложения. Во время выполнения теста я получаю сообщение «Войдите в систему, чтобы завершить покупку»:
Мне удалось заполнить текстовое поле «Apple ID», поскольку клавиатура уже открыта и готова к его заполнению. Для этого я использовал:
XCUIApplication *app = [[XCUIApplication alloc] init];
[app typeText:@"My iTunes username"];
Но смоделировать тап по полю пароля я не смог. Я не мог понять, как это найти в пользовательском интерфейсе. Я перепробовал множество вариантов (но ни один из них не сработал):
XCUIElementQuery *collectionViewsQuery = app.collectionViews;
[collectionViewsQuery.textFields[@"password"] tap];
[collectionViewsQuery.textFields[@"Password"] tap];
[[collectionViewsQuery.textFields firstMatch] tap];
[collectionViewsQuery.secureTextFields[@"password"] tap];
[collectionViewsQuery.secureTextFields[@"Password"] tap];
[[collectionViewsQuery.secureTextFields firstMatch] tap];
XCUIApplication *springboard = [[XCUIApplication alloc] initWithBundleIdentifier:@"com.apple.springboard"];
[[springboard.alerts firstMatch].textFields[@"password"] tap];
[[springboard.alerts firstMatch].textFields[@"Password"] tap];
Я думаю, что настоящая проблема заключается в том, что я не могу получить соответствующее представление (или collectionView в данном случае). Я попытался поискать в документации Apple, но ничего не нашел. Я видел возможность добавить файл конфигурации для тестирования покупок в приложении, но в моем случае я не тестирую покупки в приложении. Я загружаю другое приложение из своего приложения, чтобы проверить ценность конверсии (SKAdNetwork) на ферме устройств AWS.
1 ответ
Через несколько часов я нашел ответ:
- (void)signInToItunes {
XCUIApplication *app = [[XCUIApplication alloc] init];
[app typeText:@"YourAppleID"];
sleep(2);
[[app.secureTextFields firstMatch] tap];
[app typeText:@"YourPassword"];
sleep(2);
[app.buttons[@"Sign In"] tap];
}