Программный вход пользователя в Flutter WebView
Я использую webview_flutter.
В настоящее время у меня есть собственная страница входа в мое приложение, которая принимает имя пользователя и пароль. Я пытаюсь найти способ автоматически ввести имя пользователя и пароль на определенной странице в веб-просмотре и отправить запрос на вход.
Пытался сделать это
webViewController.evaluateJavascript(
'''
var email = document.getElementById("CustomerEmail");
var password = document.getElementById("CustomerPassword");
email.value = "user@gmail.com";
password.value = "test123";
'''
);
но возникли следующие ошибки:
Error Domain=WKErrorDomain Code=4 "A JavaScript exception occurred" UserInfo={WKJavaScriptExceptionLineNumber=3, WKJavaScriptExceptionMessage=TypeError: null is not an object (evaluating 'email.value = "user@gmail.com"'), WKJavaScriptExceptionColumnNumber=11, WKJavaScriptExceptionSourceURL=undefined, NSLocalizedDescription=A JavaScript exception occurred})
Очень признателен за любую помощь по этому поводу. Спасибо.
1 ответ
Код работает, не туда положил.
Код должен быть размещен в onPageFinished. Раньше у меня он был под onWebViewCreated.
Следующий код работает правильно.
WebView(
initialUrl: widget.url,
onPageFinished: (_) {
setState(() {
print("loggedin " + loggedIn.toString());
if(loggedIn == false) {
loggedIn = true;
_controller.future
.then((value) =>
value.evaluateJavascript('''
var email = document.getElementById("CustomerEmail");
var password = document.getElementById("CustomerPassword");
email.value = "user@gmail.com";
password.value = "test123";
document.getElementById('customer_login').submit();
'''));
}
});
},
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (WebViewController webViewController) {
_controller.complete(webViewController);
},
),