Dúvida para Implementar Ideia

Douglas,

Realizei os testes aqui mas não funcionou ele não identifica o botão “Imprimir Capa” mesmo desabilitado.
Não teria que programar a Checkbox assim que selecionada para depois acionar o botão Imprimir Capa ou sei la, é possível programar a quantidade de caracteres da palavra Imprimir Capa.
Estou dando ideias sem noção da possibilidade viu, então me desculpa se estiver falando bobagem.

Pensei de outra forma também, talvez criar um botão no clicador igual ao Checkbox para que eu também consiga acionar clicando com o Mouse, mesmo que tenha que digitar no Ctrl+F para buscar a o “Imprimir Capa” não teria problemas, se funcionar e não der muito trabalho poderia ser. Veja o pixel selecionado com o Ctrl+F na imagem.

sele%C3%A7%C3%A3opixel_ImprimirCapa

Vou tentar fazer uma extensão para o chrome que clica nesse botão.

Pequei aqui uma extensão do GitHub, e já consegui fazer ela clicar no botão “Developer Jobs” do StackOverflow.

Para funcionar, precisa do “id” html do botão, que no caso aqui era “nav-jobs”:

Vou precisar que você consiga esse id para o botão “Imprimir Capa”, basta clicar nele com o botão direito do mouse e clicar em “Inspecionar”, o Chrome abre então uma janela como a de cima, onde você deve encontrar o “id” do botão, como mostrado acima.

Essa é a extensão como está agora:

ImprimirCapa.zip (7,2 KB)

Atualmente, ao acioná-la ela vai tentar clicar num botão de id “nav-jobs” que esteja presente na página, e não faz nada se não encontrar na página algo com esse id.

Você pode testá-la no site https://stackoverflow.com, ao usá-la nesse site, ela irá abrir a aba “Developer Jobs”.

Antes de acionar o botão, ela mostra uma mensagem “Vou clicar no Botao!”, que serve para testar se ela está funcionando; essa mensagem poderá ser removida.

O único código que precisa ser alterado nela está no arquivo alert.js, que atualmente é assim:

alert("Vou clicar no Botao!");
document.getElementById("nav-jobs").click();

você poderá remover essa linha “alert("Vou clicar no Botao!");”, e, terá que mudar o “nav-jobs” pelo id do botão “Imprimir Capa” (que você terá que descobrir qual é), ficando algo assim:

document.getElementById("imprimir-capa").click();

Para adicionar essa extensão ao chrome, você pode seguir os passos desse artigo que ensina a criar sua primeira extensão e testá-la no chrome.

Veja que, na hora de adicioná-la ao chrome você precisará simplesmente procurar e selecionar a pasta “ImprimirCapa” que te mandei dentro desse zip (extraia a pasta do zip ao invés de tentar selecionar o zip).


Obs.: Quando editar os arquivos da extensão, certifique-se de que você não colocou nenhuma letra com acento ou símbolo “estranho”, digo isso porque quando eu escrevi “Botão” ao invés de “Botao” não funcionou, “bugou” por causa do “ã” e nem mostrou mensagem de erro. Deve ter como configurar a codificação de caracters, mas não sei como.

1 curtida

A respeito do Clicador nem sempre encontrar todos os pixels laranja do Ctrl+F, na hora de selecionar um dos Números, talvez o problema seja a configuração da AREA_DA_SELECAO; pela imagem que você me mandou, você pode ver que a captura está cortando o comecinho dos números. Talvez essa área também não tenha um Height grande o suficiente.

Faça o seguinte, role a página para uma posição em que o Clicador não encontra os pixels laranja, acione o Clicador e veja a Captura dele (pode redimensionar a Janela do Clicador se necessário): Veja se o número Selecionado de laranja coube bem dentro da imagem capturada, ou se está cortado.

Se o número com sua seleção laranja couberam bem dentro da imagem capturada, o problema não é de configuração e vai ser mais difícil resolver. Caso contrário, deve ser problema de configuração mesmo.

A área da seleção é controlada por essas propriedades, mude os valores delas conforme o necessário:

AREA_DA_SELECAO_X: 674
AREA_DA_SELECAO_Y: 318
AREA_DA_SELECAO_WIDTH: 103
AREA_DA_SELECAO_HEIGHT: 492

1 curtida

Que máximo, Douglas. :scream:
Ja estou ansiosa pra testar, na segunda eu vejo como funciona no sistema da empresa.
Muito muitooo obrigada por tudo!!!

Essa parte de não selecionar o pixel laranja só ocorreu quando tentamos selecionar o botão imprimir capa, dai as vezes não capaturava, mas ta funcionando totalmente, quando estiver tudo ok, dai vou realizar um teste com uma massiva pra ver se o Mouse Pro acompanha. Mas ta perfeito Douglas, o que for ocorrendo tento ajustar as configurações como falou. Conseguindo acionar o botão Imprimir Capa com a extensão já devo conseguir executar a demanda. Muito muito obrigada :pray:

Se funcionar com essa extensão, acho uma boa ideia remover do Clicador o código no qual ele tenta encontrar o botão “Imprimir Capa” e clicar nele, assim diminuirá a chance dele fazer algo errado após clicar na checkbox.
Daí eu te envio também o Projeto do Clicador para que você possa editá-lo no futuro, se precisar.

Mas por agora, vamos ver se a extensão vai dar certo. :slight_smile:

1 curtida

Bom dia, Douglasssss.

Teste realizado com sucesso, funcionou!!! :star_struck::star_struck:
Você é o cara, muito muito obrigada :blush:
Ah me manda sim o projeto por favor, se necessário eu edito, você é demais. Obrigadaaa mesmo.

Que bom que funcionou :smile: estou enviando o Clicador e o Projeto:

ClicadorDeCheckbox.zip (14,3 KB)
ProjClicadorDeCheckbox.zip (22,5 KB)

Tirei o código que tentava clicar no botão “Imprimir Capa”, e deixei a Janela do Clicador mais informativa:

  • O Fundo dela fica verde quando o Clicador conseguiu clicar na checkbox (ou tentou clicar nela);
  • O Fundo dela fica vermelho se não deu certo, por qualquer coisa não ter sido encontrada;
  • Ela mostra separadamente a área com o número Selecionado pelo Ctrl+F, ou não mostra caso não tenha encontrado;
  • Só mostra a área da checkbox se tiver encontrado o número Selecionado pelo Ctrl+F.
1 curtida

Muitíssimo obrigada Douglas, me ajudou demais. Parabéns pelo projeto, eu achei realmente incrível e com certeza vai me ajudar muito no dia a dia, ainda estou realizando testes, mas parece que vai rodar conforme o necessário. :tada::blush::kissing_closed_eyes:

O mouse record Pro não ta acompanhando o clicador. :confused: Ele ta clicando errado em alguns momentos, não seleciona o pixel laranja com efetividade , tentei mexer nas configurações mas ainda assim ta rolando esse bug, não sei se é do clicador ou o Mouse Pro. Mas acredito que seja o Mouse Pro, porque ele so erra quando gravo o comando. Vou tentando ajustar e em paralelo pensar em uma extensão para o chome algo que talvez dispense o Mouse Pro e realize o comando sozinho, sei la. Baixei aquele outro programa que mandou do Mouse Premium, mas ele tbm se perde. Caso tenha alguma idéia, compartilha cmg. Desde ja muitíssimo obrigada por tudo!!! A idéia foi fantástica

:frowning:

Para descobrir o problema provavelmente você vai precisar conseguir identificar pelo menos um caso em que essa automação falhe, e precisa ser capaz de reproduzir esse caso de falha outras vezes.

Aí é necessário investigar o que está acontecendo. A janela do Clicador te dá informação sobre o que ele conseguiu fazer e o que não conseguiu, toda vez que você clica no botão dele. Por exemplo, se o Mouse Pro realmente clicou no botão do Clicador, então a Janela do Clicador ficará verde ou vermelha, se não ficou, significa que o Mouse Pro não clicou no botão ou o click dele apenas colocou a janela do Clicador em Foco (ou que há um Bug no Clicador, o que é menos provável já que você disse que ele funciona quando operado manualmente).

Coloque para rodar um caso que você sabe que vai falhar, e coloque delays nas ações do Mouse Pro para acompanhar lentamente o que ele está fazendo, o que dá errado, e a partir disso tente descobrir porque deu errado. Talvez seja só a necessidade de haverem delays maiores entre as ações, para aguardar o tempo do Clicador e do Navegador fazerem seus trabalhos após cada comando.

Quando for consertado o problema, você precisará reproduzir esse mesmo caso para ter certeza que o problema realmente foi consertado e que agora funciona nesse caso.

O Clicador? Está clicando no lugar errado ou no momento errado? Está clicando fora da Checkbox? Se sim, verifique se não está havendo rolagem da página durante a ativação do Clicador, se não for isso, é provavel que o recorte do interior da checkbox tenha que ser maior.

Identifique um desses casos onde o Clicador não reconhece o pixel laranja, e experimente usá-lo manualmente nesse caso para ver o que ele está capturando. Ele capturou o número selecionado em laranja por inteiro? Ele mostrou a captura do número em separado? Ele mostrou a área capturada em que espera encontrar a checkbox a ser clicada?

Se ele capturou a Seleção Laranja mas não a reconheceu, é provável que os pixels dela estejam contaminados de outra cor.

No fim, a depuração exige esse trabalho de investigação mesmo, existe muitas possibilidades que podem estar levando às falhas, então precisa investigar.

Sobre passar o trabalho para extensão, vamos ver se está meio fácil, faz o seguinte:

  1. Clique num dos Números que seriam selecionados pelo Ctrl+F com o botão direito, clique em “Inspecionar”.
  2. Na aba “Elements” que abriu você deve ver o Elemento HTML desse Número selecionado, em azul, clique com o botão direito nele e então clique em “Copy > Copy selector”;
  3. Cole aqui como resposta. Deverá ser algo como “#post_85 > div > div.topic-body.clearfix > div.regular.contents.avoid-tab > div > p”.
  4. Faça o mesmo para a checkbox desse mesmo Número.

O que espero encontrar é um ancestral comum entre a Checkbox e o Número.

1 curtida

Douglas,

Realmente o Mouse Record seleciona corretamente a Checkbox com a ajuda do clicador, mas ao mesmo tempo ele tira a seleção quando no automático, é como se ele usasse 2 cliques, quando aciono o clicador ele leva o cursor do mouse diretamente na Checkbox e ali mesmo ele tira a seleção da Checkbox, isso no automatico.

Que estranho.

Talvez o Clicador esteja dando um click na checkbox e o Mouse Pro se encarrega de dar o outro click, tenta colocar um delay no Mouse Pro logo após ele dar o click no botão da janela do Clicador, e deixe o Mouse Pro mover o cursor para outra posição após esse delay.

O Código do clicador também poderia ser editado facilmente para que ele pare de clicar e apenas mova o cursor para cima da checkbox, deixando o click a cargo do Mouse Pro.

1 curtida

Realmente, muito estranho, vou verificar com esse delay. E depois tento alterar o código caso não funcione.
Muito obrigada pela atenção. :kissing_closed_eyes:

O que o selector pegou, que você me mandou, parece ser ids; o Número e a Checkbox possuem cada um o seu id, e eles são semelhantes.

Existe um padrão nesses ids, mas não sei se esse padrão se repete para todos os itens da lista, ou se vai se repetir para todas as telas.

Para extensão funcionar, acho que seria assim:

  1. Haveria um TextField adicionado pela extensão na página, que substituiria o do Ctrl+F, do lado dele teria um botão “Imprimir” também adicionado pela extensão;
  2. O Mouse Pro iria inserir o Número no TextField e clicar nesse botão “Imprimir”;
  3. O Número no TextField é enviado para uma função javascript que irá buscar pelo elemento na página que possui esse Número;
    3.1 Essa iteração talvez possa ser feita pelos ids dos labels, no id que você me mandou tinha um “02” que se repete duas vezes, não sei se há um valor diferente para cada linha para que se possa iterar.
    3.2 Através desse id deve ser possível pegar o número para compará-lo com o inserido no TextField, mas como pegá-lo? Para saber isso, vou precisar que você veja que tipo de elemento tem esse id.
  4. A partir do id correto do Numero, devemos conseguir montar o id da checkbox, tendo o id da checkbox deve ser só dar um .checked = true nela.

document.getElementById("checkboxid").checked = true;

Como eu não conheço bem esses mecanismos extensão+javascript+html seria um tanto difícil pra mim fazer isso. Acho que está mais fácil fazer o Clicador funcionar com o Mouse Pro, até porque já está quase funcionado.

Continue com os testes, e se precisar de ajuda com o código do Clicador pode me chamar. Vou estar aguardando os resultados.

Deus te abençoe.

1 curtida

Vou estudar melhor esse projeto da extensão e depois tento criar, muito obrigada pela idéia.
Hoje realizei alguns testes com um delay, e a Checkbox permaneceu clicada :pray:, pelo menos não esta mais selecionando e tirando a seleção. Agora o erro esta ocorrendo nos numeros com barra xxxxxx / xxxxxx , a checkbox é clicada fica verde, mas não seleciona.E o engraçado é que se o comando repete ele seleciona corretamente. Vou checar essa captura, altura e largura, se bem que ele me mostra certinho o número capturado, mas vou verificando caso a caso, de qualquer forma me parece que com o delay vai rodar legal. O resto acredito ser somente ajuste de configuração. Muito obrigada por ter me ajudado tanto viu, de coração mesmo! Amém que Deus abençoe você também.

Não sei se é o problema, mas imagino que quando o Clicador clica na checkbox, o Navegador não é a Janela em Foco (o Clicador que é), portanto, talvez, o click do Clicador esteja apenas colocando o Navegador em foco.

Outra possibilidade, é que o Clicador não esteja clicando bem certinho no interior da checkbox, acho que isso aconteceria se o recorte da checkbox estiver muito pequeno e sendo detectado numa lateral da checkbox.

O Clicador procura clicar bem no meio da área recortada que deu “match”.

No caso do problema ser a falta de foco no Navegador, dá para lidar com isso de diferentes formas, como fazer o Clicador clicar na Janela do Navegador (para ela ganhar foco) antes de clicar na checkbox, ou mesmo colocar um delay no Clicador para que, antes de ele clicar na Checkbox, o Mouse Pro tenha tempo de clicar na Janela do Navegador para que ela ganhe foco.

Olha o método na classe “Clicador”:

public boolean clicarNaCheckbox() {
		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		BufferedImage screenCapture = robo.createScreenCapture(new Rectangle(0, 0, screenSize.width, screenSize.height));
		Rectangle boundsDaCheckboxEncontrada = buscadorDaCheckboxDaLinhaSelecionada.buscarCheckboxDaLinhaSelecionada(
				screenCapture);
		System.out.println(boundsDaCheckboxEncontrada);
		if (boundsDaCheckboxEncontrada != null) {
			int centroDaCheckBox_X = boundsDaCheckboxEncontrada.x + (boundsDaCheckboxEncontrada.width / 2);
			int centroDaCheckBox_Y = boundsDaCheckboxEncontrada.y + (boundsDaCheckboxEncontrada.height / 2);
			clicar(centroDaCheckBox_X, centroDaCheckBox_Y); //Aqui clica na checkbox
			System.out.println("Clicou na Checkbox - x: " + centroDaCheckBox_X + ", y: " + centroDaCheckBox_Y);
			return true;
		}
		return false;
	}

Veja a linha clicar(centroDaCheckBox_X, centroDaCheckBox_Y);, antes dela você poderia colocar um clicar(posXdaJanelaDoNavegador, posYdaJanelaDoNavegador);com as coordenadas de um ponto na Janela do Navegador que o Clicador pode clicar sem causar nenhum problema (como o fundo da página), só para dar foco a Janela do Navegador antes dele clicar na checkbox.

1 curtida

Estou mexendo nas configurações, ajustando, mas ele só é asertivo sem a utilização do mouse record, tem momentos em que ele ta selecionando duas checkboxs de uma só vez. Quando ajusto a área xxxxxx / xxxxxx na captura ele se perde na xxxxxx, e as vezes pegando um outro numero xxxxxx, ele executa corretamente, ta meio teimoso, mas tenho fé que ele vai acontecer. :pray:
Vou testar suas alternativas, vou ajustar em casa e levo amanhã, o mais difícil você ja fez, agora tenho que conseguir adpta-ló. Muito obrigada pela ajuda, vou te falando sobre o que vai acontecendo, e contando com sua experiência.Obrigada demais!!

Acho que ele só faria uma coisa dessas se ele recebesse dois clicks no botão da janela dele, e se a Área da Checkbox estivesse grande demais para capturar mais de uma checkbox, mesmo que parcialmente.

Isso é bem estranho, como ele pode pegar outro número? ele simplesmente busca pelos pixels laranja do Ctrl+F.

Pelo que você está falando, tenho a impressão que o Clicador está sendo ativado enquanto há pixels laranja selecionando duas linhas de Números diferentes; isso o faria clicar na checkbox errada ou mesmo criar uma área de checkbox grande o suficiente para que duas checkbox sejam marcadas.

Mas esse tipo de problema ficaria bem claro nas capturas que aparecem na janela dele.

Talvez, se o trabalho que o Mouse Record está fazendo for muito simples, podemos adicionar a funcionalidade dele no clicador, dispensando-o.
Se o que ele faz é simplesmente dar uma sequência de clicks em coordenadas específicas, aguardando delays específicos, deve ser fácil adicionar essa funcionalidade ao clicador. A funcionalidade de fazer Ctrl+C e Ctrl+V o robô do Java também consegue fazer.

O robô do Java consegue fazer atalhos de teclado como Ctrl+P também, mas ele não é bom para escrever coisas (nunca consegui fazer ele teclar o ponto de interrogação, e pelo que me lembro, nem o cê-cedilha).

1 - Acho que ele só faria uma coisa dessas se ele recebesse dois clicks no botão da janela dele, e se a Área da Checkbox estivesse grande demais para capturar mais de uma checkbox, mesmo que parcialmente.

Acho que o Mouse Pro bagunça ele, realmente aconteceu em alguns casos.

2 - Isso é bem estranho, como ele pode pegar outro número? ele simplesmente busca pelos pixels laranja do Ctrl+F.

Sinceramente não sei te explicar porque entendo que ele deveria selecionar somente o pixel laranja, mas é como se ele movesse o cursor do mouse selecionasse um Checkbox sem pixel laranja e depois seleciona o correto, mas mantem ambos selecionados.

3 - Mas esse tipo de problema ficaria bem claro nas capturas que aparecem na janela dele.
Esse é o que me deixa confusa, porque ele captura exatamente o pixel correto, mas o Mouse Pro o atrapalha, manual o funcionamento é correto.

4 - Talvez, se o trabalho que o Mouse Record está fazendo for muito simples, podemos adicionar a funcionalidade dele no clicador, dispensando-o.
Se o que ele faz é simplesmente dar uma sequência de clicks em coordenadas específicas, aguardando delays específicos, deve ser fácil adicionar essa funcionalidade ao clicador. A funcionalidade de fazer Ctrl+C e Ctrl+V o robô do Java também consegue fazer.

A funcionalidade dele é exatamente isso, só uso comando de Ctrl+C e Ctrl+V, Ctrl P, é uma repetição, faço uma vez, e ele repete. Uso um Excel com as informações, a pagina web, e a extensão que imprime a capa.

5 - O robô do Java consegue fazer atalhos de teclado como Ctrl+P também, mas ele não é bom para escrever coisas (nunca consegui fazer ele teclar o ponto de interrogação, e pelo que me lembro, nem o cê-cedilha).

Nesse processo ele só usa teclas de atalhos mesmo , não tem necessidade de escrever.