Visão Computacional¶
Usando os métodos abaixo, você poderá usar a visão computacional para interagir com os elementos que aparecem na tela.
Adicionar imagem¶
Por padrão, as imagens dos elementos são obtidas da pasta resources
do projeto e adicionadas ao mapa de imagens.
No entanto, é possível adicionar uma imagem que está em outro diretório no mapa da imagens e, assim, acessá-la normalmente através do label definido.
Observação
Esta operação não é necessária para imagens que já estão na pasta resources
padrão do projeto.
Obter imagem do mapa¶
Você pode obter uma imagem específica do mapa de imagens usando um label definido.
Encontrando elementos¶
Usando os métodos de 'find', é possível procurar um elemento na tela usando a visão computacional até que ocorra um tempo limite. Você pode usar o retorno do método de busca para verificar se um elemento foi encontrado ou não e com base nisso realizar o tratamento necessário.
# Imprima se o primeiro_elemento NÃO foi encontrado na tela.
if not bot.find(label="primeiro_elemento", matching=0.97, waiting_time=10000):
print("Este elemento não foi encontrado.")
# Imprima se o segundo_elemento foi encontrado na tela.
if bot.find(label="segundo_elemento", matching=0.97, waiting_time=10000):
print("Este elemento foi encontrado.")
# Usar find_until terá o mesmo efeito que o uso do find.
if bot.find_until(label="outro_elemento", matching=0.97, waiting_time=10000):
print("Encontrado!")
// Imprima se o primeiroElemento NÃO foi encontrado na tela.
if(!find("primeiroElemento", 0.97, 10000)) {
System.out.println("Este elemento não foi encontrado");
}
// Imprima se o segundoElemento foi encontrado na tela.
if(find("segundoElemento", 0.97, 10000)) {
System.out.println("Este elemento foi encontrado");
}
O método find
acima é o mais comum de usar e basicamente funcionará para todos os casos em que precisamos procurar um elemento na tela.
No entanto, é possível usar métodos de busca para situações específicas.
Encontrar elemento de texto¶
Encontrar todos os elementos¶
Além de realizar operações com elementos únicos, também é possível procurar por vários elementos diferentes ou todas as ocorrências de um mesmo elemento.
// Procure todas as ocorrências do elemento.
List<State> elementos = findAll("testeElemento", 0.97, 20000);
// Para cada elemento encontrado, imprima as coordenadas.
for(State ele : elementos) {
System.out.println(ele.getX());
System.out.println(ele.getY());
System.out.println(ele.getWidth());
System.out.println(ele.getHeight());
}
Encontrar múltiplos elementos¶
# Lista com o label dos elementos.
elementos_para_encontrar = ["ele1", "ele2", "ele3", "ele4"]
# Ao procurar todos os elementos será retornado um dicionário com o label e as coordenadas de cada um.
elementos = bot.find_multiple(labels=elementos_para_encontrar, matching=0.97, waiting_time=20000)
print(elementos)
// Lista com os labels dos elementos.
List<String> ElementosParaEncontrar = new ArrayList<String>();
ElementosParaEncontrar.add("ele1");
ElementosParaEncontrar.add("ele2");
ElementosParaEncontrar.add("ele3");
ElementosParaEncontrar.add("ele4");
// Procurar todos os elementos retornará um mapa com os labels e coordenadas de cada um.
Map<String, State> elementos = findMultiple(ElementosParaEncontrar, 0.97, 10000);
// Imprimindo as coordenadas do elemento "ele2".
System.out.println(elementos.get("ele2"));
Definir elemento atual¶
Você pode definir o elemento atual para executar operações nele. Isso pode ser útil quando procuramos vários elementos, mas queremos trabalhar com um específico.
Obtendo elementos¶
Você pode obter informações sobre o último elemento encontrado e também as coordenadas de um elemento específico.
Obtenha o último elemento¶
// Obtenha o último elemento encontrado na tela.
State ultimoElemento = getLastElement();
// Imprimindo as coordenadas do elemento.
System.out.println(ultimoElemento.getX());
System.out.println(ultimoElemento.getY());
System.out.println(ultimoElemento.getWidth());
System.out.println(ultimoElemento.getHeight());
Obter coordenadas do elemento¶
# Este método procurará o elemento e retornará suas coordenadas X e Y.
ele = bot.get_element_coords(label="teste_elemento", matching=0.97)
print(ele)
# Este método procurará o elemento e retornará suas coordenadas X e Y centralizadas.
coord_elemento = bot.get_element_coords_centered(label="teste_elemento", matching=0.97)
print(coord_elemento)
// Este método procurará o elemento e retornará suas coordenadas X e Y.
Point ele = getElementCoords("test_element", 0.97);
System.out.println(ele);
// Este método procurará o elemento e retornará suas coordenadas X e Y centralizadas.
Point elementoCentrado = getElementCoordsCentered("test_element", 0.97);
System.out.println(elementoCentrado);