WKWebView удаляет автоматически заполненные данные - PullRequest
2 голосов
/ 05 апреля 2020

Я пытаюсь автоматически заполнить формулу входа и подтвердить данные, нажав кнопку входа. Я хотел бы использовать 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 при входе в систему пусты, и я получаю неверную ошибку ввода данных.

Пример

Example gif

Обратите внимание, что даже при неправильном адресе электронной почты поля ввода адреса и пароля не очищаются при нажатии кнопки входа в систему.

Вопрос:

Почему автоматически заполненные данные удаляются при нажатии кнопки входа в систему и почему введенные данные обычно не удаляются?

1 Ответ

0 голосов
/ 15 апреля 2020

Проверьте код javascript на странице, чтобы увидеть, очищает ли он поля самостоятельно или, возможно, ожидал ввода в поля.

...