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

时间:2019-04-29 23:28:04

标签: javascript swift wkwebview

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

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

并找到要单击的链接:

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>

但是我对你们的问题是,我如何才能单击这些链接,例如此链接:

<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或其他快速方式单击该链接?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

要单击以下链接,您需要以某种方式对其进行标识,为了便于示例,我将使用标签,因为该类不是唯一的,理想情况下您将具有一个ID。

<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中给定的路径。