Я хочу нажать определенную кнопку на html-странице с помощью Android WebView.
У меня есть этот HTML-код:
<div class="card">
<div class="card-header" id="block2">
<button type="button" class="btn bld-no-btn" aria-expanded="true" aria-controls="item2" data-toggle="collapse" data-target="#item2">
<div class="d-flex align-items-center">
<i class="icon small blue icon-arrow pr-3" aria-hidden="true">delta_omhoog</i>
<h3>Title of button</h3>
<div class="ml-auto pr-0 pr-md-3">
<i class="icon red px-1" title="waarschuwing">waarschuwing</i>
</div>
</div>
</button>
</div>
Я разместил его здесь: http://www.jimclermonts.nl/test/
Я написал этот код, чтобы нажать кнопку
class MainActivity : AppCompatActivity() {
lateinit var webView: WebView
var firstTime: Boolean = true
companion object {
const val JAVA_SCRIPT =
"javascript:window.HTMLOUT.processHTML('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');"
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
webView = findViewById(R.id.webView)
initializeWebView("http://www.jimclermonts.nl/test/")
}
@SuppressLint("JavascriptInterface", "SetJavaScriptEnabled")
private fun initializeWebView(url: String?) {
class JavaScriptTokenSubstractInterface {
@JavascriptInterface
@SuppressWarnings("unused")
fun processHTML(html: String) {
// check if html is correct
webView.loadUrl(
"javascript:(function() {" +
"document.getElementById(\"item2\").querySelectorAll(\"button\")[0].click();" +
"})()"
)
}
}
webView.webChromeClient = object : WebChromeClient() {
override fun onConsoleMessage(message: String, lineNumber: Int, sourceID: String) {
Log.d("MyApplication", "$message -- From line $lineNumber of $sourceID")
}
}
webView.settings.javaScriptEnabled = true
webView.settings.useWideViewPort = true
webView.requestFocus(View.FOCUS_DOWN)
webView.clearCache(true)
webView.clearHistory()
webView.webViewClient = object : WebViewClient() {
override fun onPageFinished(webView: WebView?, url: String) {
super.onPageFinished(webView, url)
if (firstTime) {
firstTime = false
webView?.loadUrl(JAVA_SCRIPT)
}
}
}
webView.loadUrl(url)
}
}
Androidmanifest:
<uses-permission android:name="android.permission.INTERNET" />
Пока я застрял и не могу найти решение,Я использовал метод processHTML, чтобы проверить, проходит ли HTML-код, и я использовал логическое значение, которое не вызывает запуск одной и той же страницы.