Cocoa Swift:如何在WKWebView中使用javascript自动单击html
我正在WKWebView中加载html页面,需要单击一个链接。例如加载Cocoa Swift:如何在WKWebView中使用javascript自动单击html,javascript,swift,wkwebview,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!){ we
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或swift中的任何其他方式单击该链接吗
非常感谢您的帮助。要单击以下链接,您需要以某种方式标识它,例如,我将使用标签,因为类不是唯一的,理想情况下您应该有一个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>
然后在脚本中,调用方法
这将模拟单击并将您重定向到href中给定的路径。您对“myCheck”的意思是什么?这只是我给您的href的ID,然后我在javascript中按ID抓取该元素,然后使用.click()方法。问题是URL没有我发布的每个代码的ID。他们有一个类。你需要某种类型的唯一标识符,否则你会触发对所有带有你指定类名的链接的点击。你可以发布一个例子吗?
let elementToClick = document.querySelectorAll('[aria-label="Learn more about trade in"]')[0];
elementToClick.click();