Использование EvaluateJavaScript для нажатия кнопки неожиданное поведение - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть UIViewController, у которого есть WKWebView, который загружает конкретное представление с помощью кнопки, которую нужно нажимать автоматически.Чтобы решить эту проблему, я использовал функцию протокола WKNavigationDelegate didFinish и метод WKWebView evaluateJavaScript.Вот моя реализация

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {

        webView.evaluateJavaScript("document.getElementsByClassName('myButtonClass')[0].click()") { (result, error) in
            print("ERROR: \(error)")
            print("RESULT: \(result)")
        }
    }

Так что, как только страница загружена, я пытаюсь нажать определенную кнопку на экране (имейте в виду, есть только одна кнопка с этим именем класса в этом конкретном просмотре страницы).Когда этот код выполняется, распечатываются и result, и error, и оба они nil.Тем не менее, кнопка не нажата, и WKWebView никогда не перенаправляет на ссылку, на которую ссылается кнопка.

Как это возможно, что нет error, но ничего не происходит?

Я пропустил какую-то настройку навигации или что-то в этом роде?

1 Ответ

0 голосов
/ 03 октября 2018

Я думаю, вам не хватает ; внутри скрипта.Попробуйте это

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {

    webView.evaluateJavaScript("document.getElementsByClassName('myButtonClass')[0].click();") { (result, error) in
        print("ERROR: \(error)")
        print("RESULT: \(result)")
    }
}
...