Для этого вы можете использовать JavaScript.
Если вы просматриваете страницу, вы можете легко определить идентификаторы полей ввода текста (expert_email
и expert_password
) и выполнить код JS, чтобы заполнить их.
Реализация webViewDidFinishLoad
метод UIWebView
делегата следующим образом:
Objective-C:
- (void)webViewDidFinishLoad:(UIWebView *)webView {
//fill data
NSString *email = @"[email protected]";
NSString *password = @"mypassword";
NSString *fillDataJsCall = [NSString stringWithFormat:@"document.getElementById('expert_email').value = '%@';document.getElementById('expert_password').value = '%@';", email, password];
[webView stringByEvaluatingJavaScriptFromString:fillDataJsCall];
//check checkboxes
[webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('expert_remember_me').checked = true; document.getElementById('expert_terms_of_service').checked = true;"];
//submit form
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^(void)
{
[webView stringByEvaluatingJavaScriptFromString:@"document.forms[\"new_expert\"].submit();"];
});
}
СВИФТ:
func webViewDidFinishLoad(webView: UIWebView) {
// fill data
let savedUsername = "USERNAME"
let savedPassword = "PASSWORD"
let fillForm = String(format: "document.getElementById('expert_email').value = '\(savedUsername)';document.getElementById('expert_password').value = '\(savedPassword)';")
webView.stringByEvaluatingJavaScriptFromString(fillForm)
//check checkboxes
webView.stringByEvaluatingJavaScriptFromString("document.getElementById('expert_remember_me').checked = true; document.getElementById('expert_terms_of_service').checked = true;")
//submit form
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(1 * NSEC_PER_SEC)), dispatch_get_main_queue()){
webView.stringByEvaluatingJavaScriptFromString("document.forms[\"new_expert\"].submit();")
}
}
Это должно заполнить вашу информацию. Однако этот код может легко сломаться, если этот веб-сайт изменит свою структуру в будущем. Этот метод выполнения JS-кода более разумен, когда вы обрабатываете свои собственные страницы.
Edit:
Я обновил код, чтобы показать, как проверить флажки и как отправить форму.
Некоторые примечания:
- когда Логин не удается страница перезагружается, так что вы будете в конечном итоге с бесконечной петле звонков
webViewDidFinishLoad
поскольку вы пытаетесь снова и снова подать, поэтому вам может понадобиться добавить некоторую логику для разрыва в этом случае. Вот почему я поставил перед отправкой задержку, чтобы увидеть, что происходит.
- В дополнение к информации в предыдущем пункте - вы будете получать звонки до
webViewDidFinishLoad
в любом случае после успешного входа в систему (при переадресации на следующую страницу), чтобы вы могли поднять флаг после загрузки другой страницы (выполнить попытка входа в систему выполняется только на странице входа в систему).
Я бы сохранил имя пользователя в 'NSUserDefaults'. Для пароля вы можете использовать TouchID после того, как пользователь вводит свой пароль, если они этого захотят. Простое автозаполнение пароля не было бы очень безопасным. –
Нет, но это приложение только для меня! Моя проблема заключается только в том, чтобы вводить строки имени пользователя и пароля и заполнять формы на веб-странице. –