在网络视图 swift 中单击没有 link 的按钮
clicking on a button with no link in webview swift
我写了一个代码来自动登录一个我经常每天登录的网站。
j3 命令无法正常工作,它不会单击按钮,也不会导航到下一页,但其余代码运行良好。
j3 代码的 javascript 命令是正确的,因为我首先在 python 代码中编写了它并且它工作得很好但是我在 swift webview 中遇到了这个问题,它没有登录。
class ViewController: UIViewController , WKNavigationDelegate {
@IBOutlet weak var user: UITextField!
@IBOutlet weak var pass: UITextField!
@IBOutlet var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: "https://karsanj.net/login.php")!
webView.navigationDelegate = self
webView.load(URLRequest(url : url))
}
@IBAction func onLogInTapped(){
let j1="document.getElementById('username').value='\(user.text!)';"
let j2="document.getElementById('password').value='\(pass.text!)';"
let j3="document.getElementsByClassName('btn').click();"
webView.evaluateJavaScript(j1, completionHandler: nil)
webView.evaluateJavaScript(j2, completionHandler: nil)
webView.evaluateJavaScript(j3, completionHandler: nil)
}
}
document.getElementsByClassName
总是 returns 包含所有具有此类名称的元素的数组,即使只有一个元素具有指定的 class 名称,就像我猜这是你的案件。
所以我建议,而不是这个:
let j3="document.getElementsByClassName('btn').click();"
你应该这样写:
let j3="document.getElementsByClassName('btn')[0].click();"
我写了一个代码来自动登录一个我经常每天登录的网站。
j3 命令无法正常工作,它不会单击按钮,也不会导航到下一页,但其余代码运行良好。 j3 代码的 javascript 命令是正确的,因为我首先在 python 代码中编写了它并且它工作得很好但是我在 swift webview 中遇到了这个问题,它没有登录。
class ViewController: UIViewController , WKNavigationDelegate {
@IBOutlet weak var user: UITextField!
@IBOutlet weak var pass: UITextField!
@IBOutlet var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: "https://karsanj.net/login.php")!
webView.navigationDelegate = self
webView.load(URLRequest(url : url))
}
@IBAction func onLogInTapped(){
let j1="document.getElementById('username').value='\(user.text!)';"
let j2="document.getElementById('password').value='\(pass.text!)';"
let j3="document.getElementsByClassName('btn').click();"
webView.evaluateJavaScript(j1, completionHandler: nil)
webView.evaluateJavaScript(j2, completionHandler: nil)
webView.evaluateJavaScript(j3, completionHandler: nil)
}
}
document.getElementsByClassName
总是 returns 包含所有具有此类名称的元素的数组,即使只有一个元素具有指定的 class 名称,就像我猜这是你的案件。
所以我建议,而不是这个:
let j3="document.getElementsByClassName('btn').click();"
你应该这样写:
let j3="document.getElementsByClassName('btn')[0].click();"