До сих пор я наблюдал, что фоновые задачи, такие как следующий код, выполняются после выполнения всего main_activity.java
.
Сначала я запускаю этот код.
webView = findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl(initialTry);
webView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
if (progress == 100) {
webView.loadUrl("javascript:document.getElementsByClassName('some-button-classname')[0].click()");
Log.i("string1", "inside progress function");
}
}
});
Здесь я загружаю URL-адрес в веб-представлении, подождите, пока он не закончит sh loading (progress==100)
, затем нажмите кнопку в URL-адресе, введя JavaScript. Теперь после нажатия кнопки веб-страница изменяется (но имеет тот же URL-адрес) и дает мне еще одну кнопку, которую я хочу нажать.
Так что я снова делаю -
webView.loadUrl("javascript:document.getElementsByClassName('some-other-button-classname')[0].click()");
Log.i("string2", "after the progress function has finished");
Но это не не работает.
Я вышел из какой-то случайной строки, чтобы проверить, какая строка печатается первой, и увидел, что сначала печатается
string2
, а затем приложение пытается загрузить URL, а затем string1
напечатано.
Я хочу нажимать много кнопок одну за другой, и веб-просмотр изменит его на HTML в курсе.
Как я могу продолжить процесс нажатия на разные кнопки, а не одну.
В основном - загрузка веб-страницы - я нажимаю кнопку - я жду - изменения веб-страницы - я нажимаю другую кнопку и так далее ...