Estas são as ligações da linguagem Java para escrever testes Appium em conformidade com o protocolo WebDriver
Desde a v9, o cliente suporta apenas Java 11 e superior. Siga o Guia de migração v8 para v9 para agilizar o processo de migração.
Desde a versão 8, o Appium Java Client teve várias mudanças importantes, que podem exigir a atualização do código do seu cliente. Certifique-se de seguir o Guia de migração v7 para v8 para agilizar o processo de migração.
Adicione o seguinte ao pom.xml:
< dependency >
< groupId >io.appium groupId >
< artifactId >java-client artifactId >
< version >${version.you.require} version >
< scope >test scope >
dependency >
Adicione o seguinte ao build.gradle:
dependencies {
testImplementation ' io.appium:java-client:${version.you.require} '
}
O projeto cliente Java está disponível para uso antes mesmo de ser publicado oficialmente no Maven Central. Consulte jitpack.io
Adicione o seguinte ao pom.xml:
< repositories >
< repository >
< id >jitpack.io id >
< url >https://jitpack.io url >
repository >
repositories >
Adicione a dependência:
< dependency >
< groupId >com.github.appium groupId >
< artifactId >java-client artifactId >
< version >latest commit ID from master branch version >
dependency >
Adicione o repositório JitPack ao seu arquivo de construção. Adicione-o ao seu root build.gradle no final dos repositórios:
allprojects {
repositories {
// ...
maven { url ' https://jitpack.io ' }
}
}
Adicione a dependência:
dependencies {
implementation ' com.github.appium:java-client:latest commit id from master branch '
}
Cliente Appium Java | Cliente Selênio |
---|---|
9.2.1 (problemas conhecidos: #2145, #2146), 9.2.2 , 9.2.3 , 9.3.0 | 4.19.0 , 4.19.1 , 4.20.0 , 4.21.0 , 4.22.0 , 4.23.0 |
9.1.0 , 9.2.0 | 4.17.0 , 4.18.0 , 4.18.1 |
9.0.0 | 4.14.1 , 4.15.0 , 4.16.0 (parcialmente corrompido), 4.16.1 |
N / D | 4.14.0 |
8.5.0 , 8.5.1 , 8.6.0 | 4.9.1 , 4.10.0 , 4.11.0 , 4.12.0 , 4.12.1 (problema conhecido: #2004), 4.13.0 |
8.4.0 | 4.8.2 , 4.8.3 , 4.9.0 |
8.3.0 | 4.7.0 , 4.7.1 , 4.7.2 , 4.8.0 , 4.8.1 |
8.2.1 | 4.5.0 , 4.5.1 , 4.5.2 , 4.5.3 , 4.6.0 |
O cliente Selenium não segue o versionamento semântico, portanto, alterações significativas podem ser introduzidas até mesmo em patches, o que exige que a equipe Appium atualize o cliente Java em resposta.
O Appium Java Client declara dependências do Selenium usando um intervalo de versões abertas que é tratado de maneira diferente por diferentes ferramentas de construção. Às vezes, os usuários podem querer fixar dependências Selenium usadas por vários motivos. Siga o artigo Gerenciamento de dependências transitivas para obter mais informações sobre como estabelecer uma versão fixa do Selenium para sua estrutura de teste Java.
O cliente Java Appium possui classes dedicadas para suportar os seguintes drivers Appium:
Para automatizar outras plataformas que não estão listadas acima, você pode usar o AppiumDriver ou seus derivados personalizados.
O cliente Java Appium é construído sobre Selenium e implementa as mesmas interfaces que o RemoteWebDriver básico. No entanto, Selenium lib é principalmente focado na automação de navegadores web, enquanto Appium é universal e cobre uma ampla gama de plataformas possíveis, por exemplo, sistemas operacionais móveis e de desktop, dispositivos IOT, etc. Assim, a classe básica AppiumDriver
neste pacote estende RemoteWebDriver
com recursos adicionais , e o torna mais flexível, por isso não é tão estritamente focado nas operações relacionadas ao navegador da web.
O cliente Java Appium fornece uma classe dedicada para controlar a execução do servidor Appium. A classe é AppiumDriverLocalService. Ele permite executar e verificar o servidor Appium localmente a partir do código da estrutura de teste e fornece vários atalhos convenientes. O serviço pode ser usado conforme abaixo:
AppiumDriverLocalService service = AppiumDriverLocalService . buildDefaultService ();
service . start ();
try {
// do stuff with drivers
} finally {
service . stop ();
}
Você pode personalizar o comportamento do serviço, por exemplo, fornecer argumentos de linha de comando personalizados ou alterar caminhos para executáveis do servidor usando AppiumServiceBuilder
Observação
AppiumDriverLocalService não oferece suporte ao gerenciamento de servidor em hosts não locais
UiAutomator2Options options = new UiAutomator2Options ()
. setUdid ( "123456" )
. setApp ( "/home/myapp.apk" );
AndroidDriver driver = new AndroidDriver (
// The default URL in Appium 1 is http://127.0.0.1:4723/wd/hub
new URL ( "http://127.0.0.1:4723" ), options
);
try {
WebElement el = driver . findElement ( AppiumBy . xpath ( "//Button" ));
el . click ();
driver . getPageSource ();
} finally {
driver . quit ();
}
XCUITestOptions options = new XCUITestOptions ()
. setUdid ( "123456" )
. setApp ( "/home/myapp.ipa" );
IOSDriver driver = new IOSDriver (
// The default URL in Appium 1 is http://127.0.0.1:4723/wd/hub
new URL ( "http://127.0.0.1:4723" ), options
);
try {
WebElement el = driver . findElement ( AppiumBy . accessibilityId ( "myId" ));
el . click ();
driver . getPageSource ();
} finally {
driver . quit ();
}
BaseOptions options = new BaseOptions ()
. setPlatformName ( "myplatform" )
. setAutomationName ( "mydriver" )
. amend ( "mycapability1" , "capvalue1" )
. amend ( "mycapability2" , "capvalue2" );
AppiumDriver driver = new AppiumDriver (
// The default URL in Appium 1 is http://127.0.0.1:4723/wd/hub
new URL ( "http://127.0.0.1:4723" ), options
);
try {
WebElement el = driver . findElement ( AppiumBy . className ( "myClass" ));
el . click ();
driver . getPageSource ();
} finally {
driver . quit ();
}
Verifique os READMEs do driver correspondente para saber a lista de capacidades e recursos que ele suporta.
Você pode encontrar muitos outros exemplos de código verificando os testes de unidade e integração do cliente.
O cliente Appium Java usa acesso reflexivo a membros privados de outros módulos para garantir a funcionalidade adequada de vários recursos, como o modelo Page Object. Se você receber uma exceção de tempo de execução e InaccessibleObjectException
estiver presente no rastreamento de pilha e seu tempo de execução Java estiver na versão 16 ou superior, considere o seguinte tutorial da Oracle e/ou verifique os problemas existentes para possíveis soluções. A idéia seria permitir explicitamente o acesso a módulos específicos usando argumentos de linha de comando --add-exports/--add-opens
.
Outra solução possível, mas pouco recomendada, seria fazer o downgrade do Java para a versão 15 ou inferior.
Esses problemas geralmente ocorrem quando o servidor Appium é iniciado diretamente a partir do código da estrutura, em vez de ser executado separadamente por um script ou manualmente. Dependendo da forma como o processo do servidor é iniciado, ele pode ou não herdar o ambiente shell atualmente ativo. É por isso que você ainda pode receber erros sobre a presença das variáveis, mesmo que essas variáveis estejam definidas para o seu interpretador de linha de comando. Novamente, não existe uma solução universal para isso, pois há muitas maneiras de iniciar um novo processo de servidor. Considere verificar o documento de solução de problemas do ambiente Appium para obter mais informações sobre como depurar e corrigir problemas de ambiente de processo.
Visite CHANGELOG.md para ver a lista completa de alterações entre as versões.
Execute um teste usando
gradle clean -Dtest.single = teste IOSAlertTest