O looping não funciona![RESOLVIDO]

2 respostas
A
Pessoal o código abaixo tem a função de clicar duas vezes numa região da tela do navegador internet explorer e capturar o texto nesta posição, faço isso para saber se a tela carregou, pois só aparece texto nesta coordenada se a tela foi carregada. Fiz uma estrutura utilizando o "While" de forma que o programa fique em looping até que a pagina tenha sido carregada, o problema é que ocorre um erro quando não exite texto para capturar, ou seja, quando a seleção é nula. Alguém poderia me ajudar? Segue abaixo o erro ocorrido e o código. Obrigado.
Erro:
Exception in thread "main" java.awt.datatransfer.UnsupportedFlavorException: Unicode String
	at sun.awt.datatransfer.ClipboardTransferable.getTransferData(Unknown Source)
	at robo.Seleciona.main(Seleciona.java:65)
A linha 65 corresponde a essa parte do codigo:
String copyResult = (String)contents.getTransferData(DataFlavor.stringFlavor);
Codigo:
package robo;

import static java.awt.event.KeyEvent.VK_C;
import static java.awt.event.KeyEvent.VK_CONTROL;

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.event.InputEvent;
import java.io.IOException;

import jxl.read.biff.BiffException;

public class Seleciona {
	
	public static void main(String[] args)throws AWTException, IOException, BiffException, UnsupportedFlavorException, InterruptedException{
		
		
		final Integer TIME_CONST = 10;
		
		Robot robot = new Robot(); 
		
		RobotManager manager = new RobotManager(robot);	
		
		robot.delay(3000);
		
		
		int contador = 0;
		
		while (contador==0){
		
		Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); 
		StringSelection str = new StringSelection( null );
		clipboard.setContents(str, null);
		
					
		robot.mouseMove(405,432);	
		
		Thread.sleep(TIME_CONST); 
		
		robot.mousePress(InputEvent.BUTTON1_MASK);
		robot.mouseRelease(InputEvent.BUTTON1_MASK);
		
		robot.mousePress(InputEvent.BUTTON1_MASK);
		robot.mouseRelease(InputEvent.BUTTON1_MASK);
		
		Thread.sleep(TIME_CONST);   

		manager.typeSequence(VK_CONTROL,VK_C); 
		Thread.sleep(TIME_CONST);
		
		Transferable contents;
	
			
		
		try {
			
			contents = clipboard.getContents(clipboard);
			
			String copyResult = (String)contents.getTransferData(DataFlavor.stringFlavor);	
			
			
			if(copyResult!=null){
				
				System.out.println(copyResult);
				
				contador=1;
				
				
				}
						
			
			} catch (IOException e) {
				
				contents = null; 
				
							
				}	
		
		   }
		
		}
	
		}

2 Respostas

julianocanuto

Olá amigo,

Ao que parece você não está tratando a exceção que está sendo lançada. Veja que a exceção é a UnsupportedFlavorException e você só trata a IOException.

Possíveis soluções seriam:

catch (IOException e){
     ...
}catch (UnsupportedFlavorException e){
     ...
}

Ou

catch (Exception e){
     ...
}

Espero ter ajudado.

Abraço,
Juliano Canuto

A

Obrigado ajudou muito. abs

Criado 9 de fevereiro de 2015
Ultima resposta 19 de fev. de 2015
Respostas 2
Participantes 2