在网络视图 swift 中单击没有 link 的按钮

clicking on a button with no link in webview swift

我写了一个代码来自动登录一个我经常每天登录的网站。

j3 命令无法正常工作,它不会单击按钮,也不会导航到下一页,但其余代码运行良好。 j3 代码的 javascript 命令是正确的,因为我首先在 python 代码中编写了它并且它工作得很好但是我在 swift webview 中遇到了这个问题,它没有登录。

class ViewController: UIViewController , WKNavigationDelegate {
    @IBOutlet weak var user: UITextField!
    @IBOutlet weak var pass: UITextField!
    @IBOutlet var webView: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let url = URL(string: "https://karsanj.net/login.php")!
        webView.navigationDelegate = self
        webView.load(URLRequest(url : url))
    }

    @IBAction func onLogInTapped(){
        let j1="document.getElementById('username').value='\(user.text!)';"
        let j2="document.getElementById('password').value='\(pass.text!)';"
        let j3="document.getElementsByClassName('btn').click();"
        webView.evaluateJavaScript(j1, completionHandler: nil)
        webView.evaluateJavaScript(j2, completionHandler: nil)
        webView.evaluateJavaScript(j3, completionHandler: nil)
    }

}

document.getElementsByClassName 总是 returns 包含所有具有此类名称的元素的数组,即使只有一个元素具有指定的 class 名称,就像我猜这是你的案件。

所以我建议,而不是这个:

    let j3="document.getElementsByClassName('btn').click();"

你应该这样写:

    let j3="document.getElementsByClassName('btn')[0].click();"