通过在 WKWebView 中计算 JavaScript 得到 HTML

Get HTML by evaluating JavaScript in a WKWebView

我在我的 iOS 应用程序中使用 WKWebView,在加载网页后,我想获得 gmail.com 的 HTML。我在 ViewDidAppear 中调用的函数中有这个表达式:

func getHTML() {
    webView.evaluateJavaScript("document.documentElement.outerHTML.toString()", completionHandler: { (html: Any?, error: Error?) in
           print(html)
    })
}

但是,当我 运行 这个函数时,我在控制台中得到以下输出:

Optional(<html><head></head><body></body></html>)

我做错了什么? Gmail 并不是唯一给我这个结果的网页——我尝试的每个页面都给我相同的输出。

这是我的全部代码:

// MARK: Outlets
@IBOutlet weak var webView: WKWebView!

override func viewDidLoad() {
    super.viewDidLoad()

    let url = URL(string: "https://www.gmail.com")!
    let request = URLRequest(url: url)

    webView.navigationDelegate = self
    self.webView.load(request)
}

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    getHTML() // the function posted above
}

问题是网页没有完全加载!我在 ViewDidAppear 中调用了我的函数,但是在我添加了一个按钮并在按下按钮时调用了 javascript 之后,我得到了我正在寻找的 HTML 。