使用 EvaluateJavaScript 单击按钮的意外行为

Posted

技术标签:

【中文标题】使用 EvaluateJavaScript 单击按钮的意外行为【英文标题】:Using EvaluateJavaScript to click a button unexpected behavior 【发布时间】:2018-09-28 18:34:21 【问题描述】:

我有一个 UIViewController,它有一个 WKWebView,它加载一个带有需要自动单击的按钮的特定视图。为了解决这个问题,我使用了 WKNavigationDelegate 协议函数 didFinish 和一个利用 WKWebView 的 evaluatejavascript 方法。这是我的实现

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) 

        webView.evaluateJavaScript("document.getElementsByClassName('myButtonClass')[0].click()")  (result, error) in
            print("ERROR: \(error)")
            print("RESULT: \(result)")
        
    

所以一旦页面被加载,我会尝试点击屏幕上的某个按钮(请记住,在这个特定的页面视图上只有一个具有此类名称的按钮)。当这段代码运行时,resulterror 都会被打印出来,它们都是nil。然而,按钮没有被点击,WKWebView 永远不会重定向到按钮链接到的链接。

怎么可能没有error却什么也没发生?

我是否缺少某种导航设置或其他东西?

【问题讨论】:

你明白了吗? 我使用这个问题***.com/questions/47523277/… 中接受的答案让它工作了 【参考方案1】:

我认为您在脚本中缺少 ;。试试这个

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) 

    webView.evaluateJavaScript("document.getElementsByClassName('myButtonClass')[0].click();")  (result, error) in
        print("ERROR: \(error)")
        print("RESULT: \(result)")
    

【讨论】:

以上是关于使用 EvaluateJavaScript 单击按钮的意外行为的主要内容,如果未能解决你的问题,请参考以下文章

WKWebView goBack(_:) evaluateJavaScript 如果返回超过 2 个历史记录失败

evaluateJavascript 是如何工作的?

使用 evaluateJavascript 处理来自 Android WebView 的 Promise

使用 evaluateJavaScript 从 WKWebView 获取标题

WKWebView 中的 Javascript - evaluateJavaScript 与 addUserScript

使用 evaluateJavascript 方法在 Cordova 的 WKWebview 上设置本地图像