如何在 UItest 中检查 wkwebview 是否完成加载

How to check if wkwebview finished loading in UItest

我想在加载 html 文件时截取该应用程序的屏幕截图。然而,有时 wkwebview 需要很长时间才能加载 html 文件。

目前我必须使用 sleep(5) 来等待 wkwebview 完成加载。

//uitest.swift

sleep(5)
takeScreenshot()

有什么方法可以检查 wkwebview 是否在 UItest 中完成加载?

我在尝试弄清楚如何制作它时也遇到了一些问题,所以我决定使用这个解决方法。在 wkwebview didfinishload 中,如果你有任何变量,你可以检查它是否存在或它的值。如果那里没有任何变量,则必须在全局范围内创建它,对吗?例如,如果我们在 wkwebview 结束加载时有这段代码:

func webView(_ webView: WKWebView,didFinish navigation: WKNavigation!) {
   myTopLabel.text = "Content Loaded"
   print("loaded") 
}

'myTopLabel' 是我用来显示我的网站状态的 UILabel,所以我要做的就是在 UITest 中执行此命令:

let nextGameLabel = self.app.staticTexts["Content Loaded"]
app.buttons["Reload Web"].tap()
XCTAssert(nextGameLabel.waitForExistence(timeout: 5))

因此,当我按下应用程序按钮时,UITest 会等待 5 秒以查看网页是否已加载。希望对大家有帮助。