Как остановить WebEngine после слишком долгой загрузки?

В настоящее время я создаю автоматизированного бота для входа на определенный веб-сайт и выполнения повторяющихся задач. Для этого я использую JavaFX и WebEngine. Проблема в том, что эта веб-страница иногда загружается долго, и мне не обязательно, чтобы она загружалась полностью.

Я использую прослушиватель для WebEngine, так что, когда загрузка будет завершена, он продолжит выполнение своих задач, но, как я уже сказал, это проблема, когда иногда загрузка занимает пару минут.

Итак, мой вопрос: есть ли способ остановить загрузку через определенное время, чтобы слушатель сообщил моей программе, что загрузка завершена? Вот мой слушатель:

webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() {
    @Override
    public void changed(ObservableValue<? extends Worker.State> observableValue, 
            Worker.State oldState, Worker.State newState) {

        if (newState == Worker.State.SUCCEEDED) {
            loaded = true;
            System.out.println("true");
            start();
        }
    }
});

person user3513071    schedule 18.05.2014    source источник


Ответы (1)


Вы можете настроить таймер, т.е. через 1 минуту остановить загрузку страницы

Timer timer = new Timer();

timer.schedule(new TimerTask() {
  @Override
  public void run() {
    // Stop loading page
  }
}, 60*1000);
person Maciej Cygan    schedule 19.05.2014
comment
Это сложно, так как я использую слушателя. Единственный способ, которым это могло бы работать, - это если бы я мог вручную установить рабочее состояние webengines на SUCCEEDED через определенное время, и я осмотрелся и не уверен, что вы можете вручную установить рабочее состояние. - person user3513071; 28.05.2014