Navegação com appium quando o app utiliza Navigation Controller

Topic created · 7 Posts · 361 Visualizações
  • Ao rodar os testes utilizando o appium em SO Android, os elementos da segunda tela na aplicação não são localizados. Parece que está sendo buscado elemento da segunda tela na primeira tela, apesar que visualmente os testes chegam na segunda tela.

    Exemplo:
    Home : Btn Entrar -> Tela Login : Informar usuário
    Os scripts de teste acessam a home, clica em entrar, avança para tela login, mas, não encontra o id do elemento “informar usuário”, pois, procura o elemento na página home.

    Já tentei:

    • aumentar a espera, coloquei uma espera fixa.
    • tentar outros seletores

    Particularidade: O app utiliza Navigation Controller.

    Retorno:

    org.openqa.selenium.NoSuchElementException: An element could not be located on the page using the given search parameters. (WARNING: The server did not provide any stacktrace information)
    Command duration or timeout: 0 milliseconds
    For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
    Build info: version: '3.5.2', revision: '10229a9', time: '2017-08-21T17:29:55.15Z'
    System info: host: 'MacBook-Pro-de-Priscila.local', ip: '192.168.0.17', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.13.6', java.version: '1.8.0_181'
    Driver info: io.appium.java_client.android.AndroidDriver
    Capabilities [{appPackage=br.com.bancobmg.bancodigital.qa, deviceScreenSize=1080x1920, networkConnectionEnabled=true, warnings={}, databaseEnabled=false, deviceName=emulator-5554, platform=LINUX, deviceUDID=emulator-5554, appActivity=br.com.bancobmg.bancodigital.activities.HomeActivity, desired={appPackage=br.com.bancobmg.bancodigital.qa, appActivity=br.com.bancobmg.bancodigital.activities.HomeActivity, platformName=Android, deviceName=Nexus_5_API_27}, platformVersion=8.1.0, webStorageEnabled=false, locationContextEnabled=false, takesScreenshot=true, javascriptEnabled=true, deviceModel=Android SDK built for x86, platformName=Android, deviceManufacturer=Google}]
    Session ID: f1c0027c-1fde-42ed-ad5b-353bfb546699
    *** Element info: {Using=id, value=ocultarSaldo}
    

    Alguém já passou por isso?

  • Já passei por alguns perrengues assim, seguinte, tenta com appium-desktop startar o inspector , dai vc grava e clica no elemento que vc quer e dar uma olhada no código que ele gerou, algumas vezes é um código via xpath gigante , mas funciona.

  • @Priscila-de-Oliveira-Campos É preciso ver como está o elemento. Muitas vezes ele está com propriedade de visibilidade como “false”. E dai na captura do elemento pode dar esse erro. Como foi dito, tu pode usar o inspector do appium (o app-desktop) para ver essas propriedades, ou o uiautomatorview (se o teste é somente android) para melhor entendimento. No caso se a visibilidade desses elementos começarem a ficar um problema, e se a sua suite for só android e estiver usando o uiautomator-driver, pode começar alguns elementos por query…dá uma olhada no link de “findElements”
    http://appium.io/docs/en/commands/element/find-elements/

  • @andre-cruz @Ramses-Saccol-de-Almeida muito obrigada pelo apoio.
    O problema estava sendo causado pela incompatibilidade da configuração na criação do driver vs versão do Android.

    Consegui resolver ao adicionar a linha abaixo na criação do driver:
    desiredCapabilities.setCapability(“automationName”, “uiautomator2”);

  • @Priscila-de-Oliveira-Campos Que bom. Ao não indicar o driver se pega o “BaseDriver” e eles são limitados na execução. Ao rodar tanto para android como para iOS, sempre indicar o driver…

  • @Ramses-Saccol-de-Almeida fiz uma refatoração e centralizei o driver. As outras classes herdam tudo da classe q verifica, ou não a necessidade de criar um driver novo.

  • @Priscila-de-Oliveira-Campos Não entendi…Tem um exemplo para mostrar?