Cocoa Swift:如何在 WKWebView 中使用 javascript 自动点击 html

Cocoa Swift: how to automate click on html using javascript using in WKWebView

我正在 WKWebView 中加载 html 页面,我需要单击 link。例如。正在加载 apple.com

override func viewDidAppear() {
    super.viewDidAppear()
    webView.load(urlString: "https://www.apple.com")
}

并找到要单击的 link:

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!){
    webView.evaluateJavaScript("document.getElementsByClassName('cta-links')[0].innerHTML") { (result, error) in
        if error != nil {
            print(error?.localizedDescription ?? "")
        }
        if result != nil{
            print("code with links \(result)")
        }
    }

}

我得到的输出是:

<a href="/us/shop/goto/buy_iphone/iphone_xr" class="cta more" aria-label="Buy now with trade in" data-analytics-title="buy now with trade-in" data-analytics-region="buy">Buy<span class="visuallyhidden">with trade in</span></a>

<a href="/us/shop/goto/trade_in" class="cta more" aria-label="Learn more about trade in" data-analytics-title="Learn more about trade-in" data-analytics-region="learn more">Learn more</a>

但我想问你们的问题是,我如何才能在 link 上点击那些 links:

<a href="/us/shop/goto/trade_in" class="cta more" aria-label="Learn more about trade in" data-analytics-title="Learn more about trade-in" data-analytics-region="learn more">Learn more</a>

有一种方法可以通过 javascript 或 swift 中的任何其他方式点击 link?

非常感谢你的帮助。

要单击下面的 link,您需要以某种方式识别它,为了举例,我将使用标签,因为 class 不是唯一的,理想情况下您应该有一个编号.

<a href="/us/shop/goto/trade_in" class="cta more" aria-label="Learn more about trade in" data-analytics-title="Learn more about trade-in" data-analytics-region="learn more">Learn more</a>

然后您需要在您的脚本中找到这个元素,您可以使用 querySelectorAll() 来做到这一点。

let elementToClick = document.querySelectorAll('[aria-label="Learn more about trade in"]')[0];

然后在您的脚本中,调用 DOM click() 方法

elementToClick.click();

这将模拟点击并将您重定向到 href 中给定的路径。