Repetir a mesma condição em vários passos consecutivos deixa a macro mais difícil de ler e manter. Se três ações fazem parte da mesma resposta, mudar o gatilho visual não deveria exigir a edição de três cards separados.
O EmuloMobile oferece a Ação Composta para essa estrutura. Ela guarda subações em uma ordem explícita e pode aplicar uma condição ao bloco completo. Quando a condição do pai passa, os filhos são considerados em sequência. Quando ela não passa, nenhum deles é executado.
A Ação Composta organiza passos dentro da mesma macro. Se você precisa passar a execução de uma macro completa para outra, use o guia sobre como encadear macros Android.
Use um bloco quando as ações respondem ao mesmo evento
Comece com uma frase que descreva a decisão: quando este estado aparecer, execute estas ações nesta ordem.
Por exemplo, quando um painel de conclusão aparece, a macro pode precisar:
- salvar uma captura do estado concluído;
- tocar em Concluir;
- voltar para a tela anterior.
Esses passos respondem ao mesmo evento visual. Um bloco pai é mais fácil de entender do que três cards de primeiro nível sem uma fronteira comum. A condição pertence ao painel de conclusão; os filhos descrevem a resposta.
Mantenha as ações separadas quando elas tiverem gatilhos diferentes, precisarem continuar visíveis de forma independente na sequência principal ou não puderem ser ignoradas juntas. A Ação Composta é uma fronteira estrutural, não apenas uma forma de encurtar o construtor.
Entenda a condição do pai antes de montar o bloco
As condições associadas à Ação Composta protegem o bloco completo. O EmuloMobile avalia esse gate antes de entrar na lista de filhos.
Isso cria dois resultados claros:
- se a condição do pai passa, o EmuloMobile processa os filhos ativos na ordem exibida;
- se a condição do pai falha, o motor ignora a Ação Composta e não avalia nem executa os filhos naquela passagem.
Cada filho ainda pode ter sua própria condição. Use esse segundo nível somente para uma regra específica da subação. O pai pode confirmar que o painel de conclusão está aberto, por exemplo, enquanto o filho Tocar no texto verifica se o rótulo Concluir está realmente presente.
Não copie a condição do pai em cada filho. Isso elimina a principal vantagem do bloco e cria vários ajustes que podem ficar diferentes com o tempo.
Como criar uma Ação Composta no EmuloMobile
Abra a automação no construtor e escolha o ponto da sequência onde a resposta agrupada deve ficar.
1. Adicione o bloco vazio
Selecione Adicionar ação, abra a categoria personalizada e escolha Ação Composta. O EmuloMobile cria um card vazio diretamente no fluxo.
Use o campo de anotação para descrever o resultado, como “Registrar conclusão e fechar painel”. Uma anotação orientada ao resultado ajuda mais do que repetir o tipo da ação.
2. Adicione as subações na ordem de execução
Dentro do card da Ação Composta, selecione Adicionar subação e crie o primeiro filho. Repita para os demais passos.
No exemplo da conclusão, adicione:
- Capturar tela;
- Tocar no texto configurado para Concluir;
- Botão do sistema configurado como Voltar, somente se o retorno fizer parte da resposta planejada.
Os filhos aparecem como cards aninhados. Use os controles de subir e descer para organizar a sequência. Não dependa da ordem em que você lembrou dos passos: revise a ordem como uma interação observável com o app de destino.
3. Adicione a condição compartilhada ao pai
Na área de condições ao final do card da Ação Composta, adicione o sinal que identifica o evento. Pode ser texto, imagem, cor, contagem ou variável aceita pelo construtor.
Escolha o sinal estável mais específico. Se houver um título de conclusão único, uma condição de texto pode bastar. Se o título também aparece em outras telas, combine outro sinal ou use uma região de detecção limitada. O guia sobre tocar em texto com OCR explica como as regiões reduzem correspondências ambíguas.
4. Adicione condições nos filhos somente quando elas mudarem a decisão
Uma condição do filho deve responder a uma pergunta mais restrita que a condição do pai. Alguns exemplos:
- fazer a captura somente quando um selo de sucesso estiver visível;
- tocar em Concluir somente quando esse rótulo estiver presente;
- executar uma limpeza somente quando uma variável booleana for verdadeira.
Existe uma regra de sequência importante dentro do bloco: se um filho com condição não passar, os filhos seguintes sem condição própria são ignorados até o motor encontrar outro filho com uma condição explícita. Isso evita que uma continuação sem proteção rode depois que seu pré-requisito esperado falhou.
Desenhe cada trecho de filhos como uma cadeia pequena. Se uma subação posterior precisa tomar uma decisão independente, dê a ela uma condição própria em vez de presumir que o passo anterior passou.
5. Salve a automação explicitamente
A criação do bloco, a reordenação dos filhos e a edição das condições ficam pendentes no construtor até você selecionar Salvar. Salve antes de sair do editor ou preparar uma execução completa.
Exemplo: registre um resultado antes de dispensá-lo
Considere um app que mostra um painel de resultado depois de um processo repetitivo. Você quer guardar uma evidência do resultado e, depois, quer que a macro feche o painel e retorne.
Monte uma Ação Composta com uma condição no pai que identifique o painel. Coloque Capturar tela em primeiro lugar, Tocar no texto: Concluir em segundo e a navegação por último.
A ordem importa. Se a macro tocar em Concluir antes da captura, o estado que deveria ser guardado pode desaparecer. Se a condição do painel ficar apenas no primeiro filho, as ações posteriores sem proteção ficam mais difíceis de interpretar quando o fluxo for editado. A condição do pai deixa a fronteira visível: toda essa resposta pertence ao painel de resultado.
Para entender o comportamento do arquivo e o acesso pela galeria, consulte o guia sobre capturas de tela automáticas em uma macro Android.
Teste a condição, os filhos e o bloco completo
Faça o teste em três níveis:
- Teste a condição do pai em uma tela onde ela deve passar e em outra onde não deve.
- Teste cada filho no estado exato da tela que ele espera.
- Teste a Ação Composta desde o início do evento e observe a ordem completa.
Use dados de teste que não causem prejuízo quando um filho puder enviar, confirmar ou sair de uma tela. Uma subação que funciona sozinha ainda pode receber o estado errado depois que a anterior altera a interface.
Se o bloco falhar, procure a primeira diferença observável. O guia sobre como testar uma macro Android passo a passo traz um método para isolar essa fronteira sem apagar passos configurados.
Mantenha o bloco pequeno o bastante para ser explicado
Uma Ação Composta útil representa um evento e uma resposta. Se o bloco precisa de uma anotação longa para explicar preparação, trabalho principal, recuperação e limpeza sem relação direta, divida o fluxo em unidades mais claras.
O construtor permite aninhar Ações Compostas, mas a profundidade deve representar uma hierarquia real. Prefira um bloco raso que possa ser lido na tela. Use condições nos filhos para exceções locais e use outra macro quando a rotina tiver começo, objetivo e ciclo de teste próprios.
Faça uma decisão liberar uma resposta coerente
A Ação Composta transforma um gatilho repetido em uma fronteira visível: uma condição no pai, um conjunto ordenado de filhos e verificações específicas opcionais em cada subação. Essa estrutura reduz configurações duplicadas e facilita entender o que deve acontecer quando o estado esperado aparece.
Conheça o EmuloMobile e monte blocos condicionais diretamente no Android.