kotlin 如何以编程方式依次在WebView中打开多个页面

nr9pn0ug  于 2023-03-30  发布在  Kotlin
关注(0)|答案(1)|浏览(119)

我想在Kotlin中打开一个网站并以编程方式登录。然后我想以编程方式打开该网站的不同页面,并使用JavaScript读取它们的信息,并将它们保存在Kotlin的一些变量中。
到目前为止,我已经使用了web视图,我可以使用以下代码以编程方式登录网站:

var webview = WebView(this)
     webview.settings.javaScriptEnabled = true
     webview.settings.domStorageEnabled = true
     webview.webViewClient = object: WebViewClient() {
        override fun onPageFinished(view: WebView, url: String) {
           webview.loadUrl("javascript: {" +
                 "document.getElementById('TXT_UserName').value = '" + password + "';" +
                 "document.getElementById('TXT_Password').value = '" + password + "';" +
                 "var frms = document.getElementById('btn_Login').click(); };")
             }
           })
        }
      }
     webview.loadUrl("http://10.104.24.64/")

我知道通过使用onPageFinished函数,我可以了解第一页何时加载完毕。但我不知道其他页面何时加载完毕。这对我来说很重要,因为在完全加载之前,我无法读取它们的信息,JavaScript返回null。而且我不知道如何通过编程从第一页打开到其他页面的链接。下面的代码在JavaScript中成功执行:但在Kotlin中返回null。

val script = "var t= document. getElementById ('ContentPlaceHold');" 
    +"t.name"
webview. evaluateJavascript(script,     object : ValueCallback<String> {
    override fun  onReceiveValue(value: String) {
      //to save JavaScript variables in to       Kotlin variables here
      }
      })

我认为这是因为Kotlin的代码是异步执行的。有人能帮我吗?提前感谢。

e3bfsja2

e3bfsja21#

感谢Gabe Sechan,我用Jsoup scraper解决了这个问题。

相关问题