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