Я пытаюсь автоматически заполнить формулу входа и подтвердить данные, нажав кнопку входа. Я хотел бы использовать Swift 5, macOS 10.15 и WKWebView.
Первый шаг сделан, я могу ввести свои данные для входа в систему следующим образом:
import Cocoa
import WebKit
class ViewController: NSViewController, WKUIDelegate, WKNavigationDelegate {
let webView = WKWebView()
let button = NSButton()
override func viewDidLoad() {
super.viewDidLoad()
button.frame = CGRect(x: 400, y: 0, width: 40, height: 20)
button.image = NSImage(named: NSImage.Name("Button"))
button.target = self
button.action = #selector(self.fillIn)
self.view.addSubview(button)
self.webView.uiDelegate = self
self.webView.navigationDelegate = self
webView.frame = CGRect(x: 0, y: 0, width: 400, height: 270)
view.addSubview(webView)
let url = URL(string: "https://lobby.ogame.gameforge.com/de_DE/hub")
let request = URLRequest(url: url!)
webView.load(request)
}
@objc func fillIn() {
setWebViewValue(name: "email", data: "user@web.de")
setWebViewValue(name: "password", data: "pwdpwd")
}
func setWebViewValue(name: String, data: String) {
let jsFunc = "document.getElementsByName(\"\(name)\")[0].value = \"\(data)\""
webView.evaluateJavaScript(jsFunc) {(result, error) in
print(result, error)
}
}
}
Но когда я нажимаю кнопка входа, все данные будут удалены. Таким образом, поля ввода email и password при входе в систему пусты, и я получаю неверную ошибку ввода данных.
Пример
Обратите внимание, что даже при неправильном адресе электронной почты поля ввода адреса и пароля не очищаются при нажатии кнопки входа в систему.
Вопрос:
Почему автоматически заполненные данные удаляются при нажатии кнопки входа в систему и почему введенные данные обычно не удаляются?