【问题标题】:clicking on a button with no link in webview swift单击webview swift中没有链接的按钮
【发布时间】:2020-07-30 18:50:23
【问题描述】:

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

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)
    }

}

【问题讨论】:

    标签: javascript ios swift3 xcode8 wkwebview


    【解决方案1】:

    document.getElementsByClassName 总是返回一个数组,其中包含所有具有此类 ClassName 的元素,即使只有一个元素具有指定的类名,就像我猜你的情况一样。

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

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

    你应该这样写:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-25
      相关资源
      最近更新 更多