Simular LongPress do hammer.js

Topic created · 11 Posts · 225 Visualizações
  • Estou automatizando uma aplicação que usa hammer.js como biblioteca de eventos de componentes. Em um determinado processo meu fluxo automatizado, tenho que simular um longpress em uma div para abrir um modal de detalhes do produto.

    Não consigo simular isso no browser e nem tenho funções do webdriver para simular isso.

    segue um exemplo na internet: https://codepen.io/choskim/pen/RLYebL

    Estou tentando, via console, simular o longclick deste quadrado verde, mas sem sucesso.

  • Na verdade existe a Touch_actions, nela tu poderia efetuar um long_press. Dá uma olhada na documentação…O que me recorda, no webdriver, era usar isso para manter pressionado algo por alguns segundos e depois soltar…

  • Então, eu trabalho com o Fred e nos tentamos aqui esses dois exemplos:
    https://webdriver.io/docs/api/element/touchAction.html
    https://github.com/webdriverio/webdriverio/issues/2599
    Um deles de acordo com a documentação e outro de acordo com um forum no gitHub.
    Eu criei um projeto no gitLab:
    https://gitlab.com/IagoAP/exemplolongpress
    Você pode so executar o comando: npm install; npm test;
    E nele tem os dois testes do longPress e se os dois falham ele gera um erro.
    O erro é (para ambos):

       TypeError: Cannot read property 'bind' of undefined
           at homePage.clicarSegurarQuadrado (/home/user/mochatest/test/pages/home.page.js:24:22)
           at World.<anonymous> (/home/user/mochatest/test/steps/home.js:13:14) name: 'TypeError'
    

    Não é possivel executar o longPress de acordo com a documentação, alguem tem alguma solução?

  • A documentação fala sobre ser apenas para app nativos e webapps…Nesse exemplo não vi configuração comentando sobre mobile…E já chegou a testar sobre tap com tempo de espera para release tambem?
    (chegou a ver a documentação do webdriver? se essa lib usa webdriver e appium por baixo, talvez possa invocar diretamente o que precisa da lib e abstrair algo na unha).

  • Cheguei a tentar o tap com tempo de espera, vou dar uma olhada na documentacao e tentar fazer na unha.

  • Se ajudar, tem documentação sobre touch_actions para javascript (pelo webdriver): https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/input_exports_Actions.html
    Talvez possa ajudar com a lib que estão usando…

  • Mesmo usando essa documentação nao funciona, da o mesmo erro:

    TypeError: Cannot read property 'bind' of undefined
    

    Essa e outra documentação que eu achei e tentei usar e tambem não funcionou: http://appium.io/docs/en/commands/interactions/touch/touch-perform/

  • Me tira uma duvida boba, estão tentando fazer isso em um device tipo android ou iOS ou estão tentando em um navegador comum mesmo? Pelo projeto de exemplo eu não vi nada relacionado a mobile…E esse touch_actions espera tu passar um driver de android ou iOS para poder mandar o comando nativamente…E ao ver esse erro de bind ele deve estar esperando esse contexto, e au não achar retorna que foi undefined
    E cada vez passando doc do appium me deixou curioso…

  • Exatamente esse o problema, ele está esperando um contexto mobile, mas estamos testando em web, tem alguma forma de testar o longPress em web?

  • Assim, eu realmente não conheço muito sobre a ferramenta que estão usando, mas o link que passei era para usar webdriver “puro” …e um dos links que passaram fala abertamente que o touch_actions implementado por eles é para mobile…então não sei se é hora de avaliar os prós e contras do que estão usando ou tentar um bind direto com o webdriver pelo framework que escolheram… (dai não é algo simples, precisa saber como o webdriverIO funciona para “tapear” ele…vai dar trabalho e não deve ter nada pronto…)
    Como foi dito (e mandado link) O webdriver fornece como trabalhar isso com o touch_actions
    E se forem ver nas issues do projeto, tem uma aberta para implementar isso (devido a problemas com puppeter)… https://github.com/webdriverio/webdriverio/issues/4457
    Infelizmente não tenho como ajudar com esse framework… Mas vale a dica, tentar algo diretamente com o webdriver e ver se funciona. Pois notei que o problema nem é com o hammer.js, mas com o framework que escolheram para a automação (a não ser que tenha perdido algo nessa conversa…o que pode ter acontecido…Dado que não mexo com esse framework…ehhehehe)
    Ps: não chegaram a procurar nada no npm ? normalmente tem trocentas libs que ajudam para coisas simples…

  • Entendi tudo que você falou, e você tem razão sim, não parece ser problema do hammer.js.
    Não cheguei a olhar nada no npm, vou dar uma olhada, quando eu encontrar a solução eu te aviso aqui, muito obrigado.