使用 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)")
所以一旦页面被加载,我会尝试点击屏幕上的某个按钮(请记住,在这个特定的页面视图上只有一个具有此类名称的按钮)。当这段代码运行时,result
和error
都会被打印出来,它们都是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 处理来自 Android WebView 的 Promise
使用 evaluateJavaScript 从 WKWebView 获取标题
WKWebView 中的 Javascript - evaluateJavaScript 与 addUserScript