Możesz użyć JavaScript, aby to zrobić.
Podczas sprawdzania strony można dość łatwo zidentyfikować identyfikatory pól wprowadzania tekstu (expert_email
i expert_password
) i wykonać kod JS, aby je wypełnić.
Wdrożenie sposobu pełnomocnika UIWebView
webViewDidFinishLoad
tak:
CEL-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();"];
});
}
SWIFT
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();")
}
}
To powinno wypełnić twoje dane. Jednak ten kod może łatwo ulec zerwaniu, jeśli ta strona internetowa zmieni swoją strukturę w przyszłości. Ta metoda wykonywania kodu JS jest bardziej uzasadniona, gdy zajmujesz się własnymi stronami.
Edit:
I uaktualniony kod do wykazania, w jaki sposób sprawdzić pola wyboru i jak wysłać formularz.
Kilka uwag:
- podczas logowania nie powiedzie się, gdy strona jest przeładowana, więc masz zamiar skończyć z nieskończonej pętli wywołań
webViewDidFinishLoad
ponieważ starasz się przedstawić w kółko, więc możesz chcieć dodać trochę logiki, aby się w tym przypadku podzielić. Dlatego przed przesłaniem przesyłam opóźnienie, aby móc zobaczyć, co się dzieje.
- Oprócz informacji z poprzedniego punktu - w każdym razie po udanym logowaniu (po przekierowaniu na następną stronę) można uzyskać połączenia z numerem
webViewDidFinishLoad
, więc warto podnieść flagę po załadowaniu innej strony (wykonać próba zalogowania się tylko na stronie logowania).
Zapisałbym nazwę użytkownika w 'NSUserDefaults'. W przypadku hasła możesz użyć TouchID po wprowadzeniu przez użytkownika hasła, jeśli tak zdecydują. Po prostu automatyczne wypełnienie hasła nie byłoby zbyt bezpieczne. –
Nie, ale jest to aplikacja tylko dla mnie! Mój problem polega tylko na przechwytywaniu moich nazw użytkowników i haseł oraz wypełnianiu formularzy na stronie internetowej. –