2013-09-30 5 views
0

У меня есть сценарий селена с помощью удаленного веб-редактора. Я использую timer.scheduleAtFixedRate(new TimerTask() для вывода моих данных, но когда я использую PrintWriter writer = response.getWriter(); для вывода writer.prntln("Testing Started");, он не отображается на веб-странице, когда он находится внутри таймера. Но он работает вне таймера. Также, если я делаю system.out.println внутри таймера, он работает.Java TimerTask не выводит текст в селен

protected void doGet(final HttpServletRequest request, final HttpServletResponse response) throws ServletException, IOException { 

    int delay = 1000; 
    int period = 1000; 
    Timer timer = new Timer(); 

     timer.scheduleAtFixedRate(new TimerTask() 
     { 

      PrintWriter writer = response.getWriter(); 
      int count = 0; 
      public void run() 
      { 

           //WebDriver actions in here. 


       } 
      }, delay, period); 

ответ

1

Я думаю, что проблема в том, что Timer порождает новый поток, так что код внутри метода run() выполняется асинхронно. К тому моменту, когда он будет выполнен, ваш метод doGet() вполне может завершиться, и ответ будет очищен.

Создание потока новостей внутри метода сервлетов - обычно плохая идея. Если вы действительно хотите выполнять асинхронную обработку, вы можете взглянуть на асинхронные сервлеты в спецификации Servlet 3.0.

Я не уверен, чего вы пытаетесь достичь, но может быть более простой способ сделать это, чем использовать объект Timer. Если вы просто хотите отложить выполнение текущего потока внутри цикла, вместо него вы можете использовать Thread.sleep().

+0

Его не задержка, которую я хочу, ее выход. В принципе, когда селен делает щелчок, я хочу, чтобы он выводил текст, например «Нажав на поиск», прежде чем переходить к следующему шагу. Когда я использую сон, он завершает весь процесс, а затем выводит весь текст одновременно. Как я могу приостановить весь сценарий, вывести текст, а затем возобновить? –

+1

Попробуйте вызвать 'response.flushBuffer()' перед вызовом 'sleep()'. –

+0

это сработало! благодаря! –

Смежные вопросы