Ir para o conteúdo

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.

# Adicionando uma imagem que está em um diretório específico ao mapa de imagens.
bot.add_image("elemento", "/meu_diretório/imagens/element.png")
// Adicionando uma imagem que está em um diretório específico ao mapa de imagens.
addImage("elemento", "/meu_diretório/imagens/element.png");
// Adicionando uma imagem que está em um diretório específico ao mapa de imagens.
desktopBot.addImage("elemento", "/meu_diretório/imagens/element.png")
// Adicionando uma imagem que está em um diretório específico ao mapa de imagens.
desktopBot.addImage("elemento", "/meu_diretório/imagens/element.png")

Obter imagem do mapa

Você pode obter uma imagem específica do mapa de imagens usando um label definido.

# Obtendo a imagem que tem o label "elemento".
img = bot.get_image_from_map("elemento")
// Ainda não implementado.
// Obtendo a imagem que tem o label "elemento".
const img = desktopBot.getImageFromMap('elemento')
// Obtendo a imagem que tem o label "elemento".
const img: Jimp = desktopBot.getImageFromMap('elemento')

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");
}
// Imprima se o primeiroElemento NÃO foi encontrado na tela.
if (await desktopBot.find('primeiroElemento') === null) 
    console.log('Este elemento não foi encontrado')

// Imprima se o segundoElemento foi encontrado na tela.
if (await desktopBot.find('segundoElemento') !== null) 
    print("Este elemento foi encontrado.")
// Imprima se o primeiroElemento NÃO foi encontrado na tela.
if (await desktopBot.find('primeiroElemento') === null) 
    console.log('Este elemento não foi encontrado')

// Imprima se o segundoElemento foi encontrado na tela.
if (await desktopBot.find('segundoElemento') !== null) 
    print("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

# Procurando por um elemento que contém apenas texto.
if bot.find_text(label="txt_elemento", matching=0.97, waiting_time=10000):
    print("Este texto foi encontrado na tela!")
// Procurando por um elemento que contém apenas texto.
if(findText("txt_elemento", 10000)){
    System.out.println("Este texto foi encontrado na tela!");
}
// Procurando por um elemento que contém apenas texto
if (await desktopBot.findText('segundoElemento') !== null)
    console.log('Este texto foi encontrado na tela!')
// Procurando por um elemento que contém apenas texto
if (await desktopBot.findText('segundoElemento') !== null)
    console.log('Este texto foi encontrado na tela!')

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.
elementos = bot.find_all(label="elemento_teste", matching=0.97, waiting_time=10000)

# Para cada elemento encontrado, imprima as coordenadas.
for ele in elementos:
    print(ele)
// Procure todas as ocorrências do elemento.
List<UIElement> elementos = findAllUntil("elemento_teste", 0.97, 20000);

// Para cada elemento encontrado, imprima as coordenadas.
for(UIElement ele : elementos) {
    System.out.println(ele.getX());
    System.out.println(ele.getY());
    System.out.println(ele.getWidth());
    System.out.println(ele.getHeight());
}
// Ainda não implementado.
// Ainda não implementado.

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)
// Ainda não implementado.
// Lista com o label dos elementos.
const 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.
const elementos = await desktopBot.find_multiple(elementos_para_encontrar)

console.log(elementos)
// Lista com o label dos elementos.
const elementos_para_encontrar: string[] = ["ele1", "ele2", "ele3", "ele4"]

// Ao procurar todos os elementos será retornado um dicionário com o label e as coordenadas de cada um.
const elementos: Element[] | null[] = await desktopBot.find_multiple(elementos_para_encontrar)

console.log(elementos)

Obtendo elementos

Você pode obter informações sobre o último elemento encontrado e também as coordenadas de um elemento específico.

Obter último elemento

# Obtenha o último elemento encontrado na tela.
ultimo_elemento = bot.get_last_element()

# Imprimindo as coordenadas do elemento.
print(ultimo_elemento)
// Obtenha o último elemento encontrado na tela.
UIElement 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());
// Obtenha o último elemento encontrado na tela.
const ultimoElemento = desktopBot.getLastElement()
// Obtenha o último elemento encontrado na tela.
const ultimoElemento: Element = desktopBot.getLastElement()

Obter coordenadas do elemento

# Este método procurará o elemento e retornará suas coordenadas X e Y.
ele = bot.get_element_coords(label="elemento_teste", matching=0.97)
print(ele)

# Este método procurará o elemento e retornará suas coordenadas X e Y centralizadas.
elemento_centralizado = bot.get_element_coords_centered(label="elemento_teste", matching=0.97)
print(elemento_centralizado)
// Este método procurará o elemento e retornará suas coordenadas X e Y.
Point ele = getCoordinates("<caminho_para_elemento.png>", 10000, false);
System.out.println(ele);
// Este método procurará o elemento e retornará suas coordenadas X e Y.
const coordsElemento = await desktopBot.getElementCoords('elemento_teste')
// Este método procurará o elemento e retornará suas coordenadas X e Y.
const coordsElemento: object = await desktopBot.getElementCoords('elemento_teste')