Depois de criar meu aplicativo no Xcode 11 e executar meu conjunto de XCUITests, estou recebendo muitas falhas aleatórias com o seguinte.
Falha ao obter instantâneos correspondentes: Erro ao obter a janela principal kAXErrorServerNotFound
Não importa quanto tempo aumente o tempo limite, os problemas aparecerão de forma intermitente. Parece estar tendo problemas ao fazer um snapshot na hierarquia da interface do usuário. Nossos testes passam consistentemente no Xcode 10.
Eu reinstalei o Xcode. Excluídos todos os simuladores. Dados derivados limpos. Tempos limite modificados. Atualizado do Xcode 11.1 para o Xcode 11.2.1.
Obrigado!
Respostas:
Tive o problema de fazer a correspondência enquanto executava o UITest simples no Xcode 11.3. Para fazer funcionar, tive que colar primeiro:
XCUIApplication().activate()
ouXCUIApplication().launch()
.fonte
Eu experimentei o mesmo problema com o Xcode 11 e percebi que o executor do teste não estava sendo morto ao interromper os testes (ou se o teste travou por algum motivo). A execução dos testes pela segunda vez geraria um novo executor de teste e, nesse ponto, eu tinha dois corredores tentando interagir com o mesmo aplicativo, levando a esse erro muito estranho.
Para provar que fiz o seguinte:
A solução alternativa foi encerrar e reabrir o simulador para garantir que todos os processos fossem mortos. Espero que isso resolva seus problemas
fonte
killall "Simulator" 2> /dev/null; xcrun simctl erase all
, executar ou, se usar a via rápida, há opções na verificação para redefinir o simulador.Eu uso máquinas diferentes. Meus Macs mais antigos enfrentam esse erro com muito mais frequência. Meu palpite é que os macs mais antigos não têm a memória necessária para executar certos XCUITests corretamente.
fonte
De vez em quando, encontro o problema no Xcode 11.1. Observei que o problema ocorre ao aguardar elementos da interface do usuário, especialmente quando há exibição da Web durante o teste. Quando o problema aconteceu, eu estava usando
XCUIElement.waitForExistence(timeout:)
ou com expectativaNSPredicate(format: "exists == true")
. Quando mudei para usar a expectativa comNSPredicate(format: "hittable == true")
o problema parece ter desaparecido, mas não sei por quê. A diferença entre os dois atributos é quehittable
apenas detectam elementos na tela enquantoexists
detectam elementos fora da tela, como células fora da tela de uma visualização de tabela.fonte
Eu tive um problema semelhante no Xcode 11.
Descobriu-se que antes era permitido ter o mesmo identificador de acessibilidade em muitas páginas.
Mas agora, usando o novo estilo de apresentação modal, você deve usar identificadores diferentes em suas páginas para evitar conflitos.
fonte