我正在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或其他快速方式单击该链接?
非常感谢您的帮助。
答案 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中给定的路径。