IndexOutOfBoundsException внутри для l oop с использованием Jsoup в Android WebView - PullRequest
0 голосов
/ 27 апреля 2020

Я использую Jsoup для анализа веб-страницы, которая использует pnet формы.

Когда страница заканчивается, я присоединяю наблюдателя мутации в webview.loadUrl:

var targetNode = document.getElementById('ctl00_UpdateProgressAguarde');
var config = {attributes: true};
var callback = function(mutationsList, observer) {
        for(var mutation of mutationsList) {
            if (mutation.attributeName == 'aria-hidden') {
                if (mutation.target.attributes['aria-hidden'].value == 'true') {
                    window.handler.handlePage('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');
                }
            }
        }
    };
var observer = new MutationObserver(callback);
observer.observe(targetNode, config);

Это Код наблюдает за загрузочным сообщением, которое показывает, когда форма загружается и когда закончил, вызывает JavaScript Интерфейс:

@Override
public void parse(Document document) {
    Element textarea = document.getElementsByTag("textarea").first();

    Element table = document.getElementsByClass("txt").first().child(0);
    Elements trs = table.children();

    if (textarea == null) {
        Log.d("Parsing", "Page");

        RandomColor colors = new RandomColor();

        for (int i = 2; i < trs.size() - 1; i++) {
            Elements tds = trs.get(i).children();

            int uid = Integer.parseInt(tds.get(1).text());
            String subject = tds.get(4).text();
            String sender = tds.get(5).text();
            long date = getDate(tds.get(6).text());
        }
    }
}

Но при загрузке страницы 2 я получаю Jsoup E/Index: 59, Size: 20: java.lang.IndexOutOfBoundsException: Index: 59, Size: 20 в строке Elements tds = trs.get(i).children();

Как видите, я не изменяю значение i, но получаю эту ошибку. Это ошибка Jsoup или WebView? Или я не вижу свою ошибку?

...