Вы, вероятно, хотели использовать метод с именем getElementsByClassName
(обратите внимание на множественное число), который возвращает массив элементов.Поэтому ваш код должен выглядеть следующим образом:
String js = "javascript:(function(){"+
"l=document.getElementsByClassName('pri_btn')[0];"+
"l.click();"+
"})()";
webView.evaluateJavascript(js, new ValueCallback<String>() {
@Override
public void onReceiveValue(String s) {
String result = s;
}
});
Кроме того, когда я попытался запустить эту функцию, во время перенаправления произошла ошибка SSL.Чтобы это исправить, вы должны переопределить метод onReceivedSslError()
в вашем WebViewClient
, например:
webView.setWebViewClient(new WebViewClient(){
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
if (handler != null){
handler.proceed();
} else {
super.onReceivedSslError(view, null, error);
}
}
});
webView.getSettings().setDomStorageEnabled(true);
Редактировать: Проверка на наличие «входа» в значение элемента:
javascript:(function(){
tab = document.getElementsByClassName('pri_btn');
for(var i=0; i< tab.length; i++){
if(tab[i].value.toLowerCase().indexOf("login") !== -1) return tab[i].click();
}
})()