нажав на кнопку без ссылки в WebView Swift - PullRequest
0 голосов
/ 17 апреля 2020

Я написал код для автоматического входа на веб-сайт, на который я обычно захожу каждый день.

команда j3 не работает, она не нажимает на кнопку и не переходит на следующую страницу, но остальная часть кода работает очень хорошо. Команда javascript кода j3 правильна, потому что я сначала написал ее в коде python, и она отлично работала, но у меня есть эта проблема в быстром веб-просмотре, который не регистрируется.

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)
    }

}

1 Ответ

0 голосов
/ 17 апреля 2020

document.getElementsByClassName всегда возвращает массив, содержащий все элементы с таким ClassName, даже если есть только один элемент с указанным именем класса, как я полагаю, это ваш случай.

Поэтому я рекомендую вместо этого:

    let j3="document.getElementsByClassName('btn').click();"

Вы должны написать это:

    let j3="document.getElementsByClassName('btn')[0].click();"
...