[HybridApp] Cannot tap on button visible but not displayed

Hi,
Still working on testing my app … but facing a new issue.

After swapping, in order to select the new value, I’ve to tap on a button “OK” :

At first, I’ve tried to :

  • Find the element,
  • Call tap or click on the element.

But I got an error :

[JSONWP Proxy] Proxying [POST /wd/hub/session/becda8d3-5f6f-4274-9260-dcad1cc3ca27/element/0.7475896361283958-23/click] to [POST http://127.0.0.1:9515/wd/hub/session/5d2474ad27be193638b9f8c39869ab9e/element/0.7475896361283958-23/click] with
body: {}
[JSONWP Proxy] Got response with status 200: {“sessionId”:“5d2474ad27be193638b9f8c39869ab9e”,“status”:11,“value”:{“message”:"element not visible\n (Session info: chrome=48.0.2564.106)\n (Driver info: chromedriver=2.21.371459 (36d3d07f660ff2…
or
[JSONWP Proxy] Proxying [POST /wd/hub/session/b8a15e15-d988-4580-88a2-9a54a4148e> cb/touch/click] to [POST http://127.0.0.1:9515/wd/hub/session/2672af1ef317147300> 956a08712cbcca/touch/click] with body: {“element”:“0.22465374693274498-23”}
[JSONWP Proxy] Got response with status 200: {“sessionId”:“2672af1ef317147300956a08712cbcca”,“status”:11,“value”:{“message”:"element not visible\n (Session info: chrome=48.0.2564.106)\n (Driver info: chromedriver=2.21.371459 (36d3d07f660ff2…

It seems that the element is not displayed even if it seems visible (see the image).

So I’ve tryed a new solution : tap based on position :

$this->tap(‘2’, $x, $y, 1000);

On the phone, I see the button is “pressed/tap” (background color change) but nothing append …

Any help will be more than appriciated …

For info :

  • Appium : 1.5.0 (fresh update)
  • phpunit : 5.2.12
  • phpunit-selenium : 3.0.0
  • appium/php-client : dev-master (last update)

Hi,
Any idea or help with this issue ?

Again thanks for any help …

Ps : maybe I should change from support to issue ?

change the context from native view to web view

Hi pavan_007,
Thanks, i’ve tryed but the action is touch action so I’ve en error “no support action” …

For info, if I swicth to web view, here is the message :

PHPUnit_Extensions_Selenium2TestCase_WebDriverException: Method has not yet been implemented

and the log :

[MJSONWP] Calling AppiumDriver.performMultiAction() with args: [[[{“action”:“pre
ss”,“options”:{“x”:1030,“y”:1100}},{“action”:“wait”,“options”:{“ms”:0}},{"action
":“release”,“options”:}],[{“action”:“press”,"opt…
[HTTP] ← POST /wd/hub/session/2b2b1144-5226-4b66-bf69-673d97247dc0/touch/multi
/perform 501 8 ms - 122

For resume :

  • Web view :
    ** Element can’t be clicked as not displayer even if visible,
    ** Cannot tap on coordinate as it’s not supported,

  • Native :
    ** Cannot click on the element as it is in the web view
    ** The tap on coordinate as no effect event if the button seems to be tap …

Hi,
I re-up this topic as even after two new version update I’m still facing the issue …

I’m wondering if I should set a bug …

Hi,
Could you provide full log.

For some info refer:

Here is the log. It’s not the complete as the scenario is very long … It’s just some click I try :
[HTTP] --> POST /wd/hub/session/a625a5d9-6925-4485-bb61-4ef960cfed33/touch/multi/perform {“actions”:[[{“action”:“press”,“options”:{“x”:1030,“y”:1145}},{“action”:“wait”,“options”:{“ms”:500}},{“action”:“release”,“options”:[]}],[{“action”:“pre
ss”,“options”:{“x”:1030,“y”:1145}},{“action”:“wait”,“options”:{“ms”:500}},{“action”:“release”,“options”:[]}]]}
[MJSONWP] Calling AppiumDriver.performMultiAction() with args: [[[{“action”:“press”,“options”:{“x”:1030,“y”:1145}},{“action”:“wait”,“options”:{“ms”:500}},{“action”:“release”,“options”:[]}],[{“action”:“press”,“o…
[debug] [AndroidBootstrap] Sending command to android: {“cmd”:“action”,“action”:“performMultiPointerGesture”,“params”:{“actions”:[[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1145}},{“action”:“wait”,“time”:0.505,“touch”:{“ms”:500,”
x":1030,“y”:1145}}],[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1145}},{“action”:“wait”,“time”:0.505,“touch”:{“ms”:500,“x”:1030,“y”:1145}}]]}}
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got data from client: {“cmd”:“action”,“action”:“performMultiPointerGesture”,“params”:{“actions”:[[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1145}},{“action”:“wait”,“time”:0.505,“touch”:{
“ms”:500,“x”:1030,“y”:1145}}],[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1145}},{“action”:“wait”,“time”:0.505,“touch”:{“ms”:500,“x”:1030,“y”:1145}}]]
}}
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command of type ACTION
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command action: performMultiPointerGesture
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Returning result: {“status”:0,“value”:“OK”}
[debug] [AndroidBootstrap] Received command result from bootstrap
[MJSONWP] Responding to client with driver.performMultiAction() result: “OK”
[HTTP] <-- POST /wd/hub/session/a625a5d9-6925-4485-bb61-4ef960cfed33/touch/multi/perform 200 2449 ms - 76
[HTTP] --> POST /wd/hub/session/a625a5d9-6925-4485-bb61-4ef960cfed33/touch/multi/perform {“actions”:[[{“action”:“press”,“options”:{“x”:1030,“y”:1145}},{“action”:“wait”,“options”:{“ms”:1000}},{“action”:“release”,“options”:[]}],[{“action”:“pr
ess”,“options”:{“x”:1030,“y”:1145}},{“action”:“wait”,“options”:{“ms”:1000}},{“action”:“release”,“options”:[]}]]}
[MJSONWP] Calling AppiumDriver.performMultiAction() with args: [[[{“action”:“press”,“options”:{“x”:1030,“y”:1145}},{“action”:“wait”,“options”:{“ms”:1000}},{“action”:“release”,“options”:[]}],[{“action”:“press”,"…
[debug] [AndroidBootstrap] Sending command to android: {“cmd”:“action”,“action”:“performMultiPointerGesture”,“params”:{“actions”:[[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1145}},{“action”:“wait”,“time”:1.004,“touch”:{“ms”:1000,
“x”:1030,“y”:1145}}],[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1145}},{“action”:“wait”,“time”:1.004,“touch”:{“ms”:1000,“x”:1030,“y”:1145}}]]}}
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got data from client: {“cmd”:“action”,“action”:“performMultiPointerGesture”,“params”:{“actions”:[[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1145}},{“action”:“wait”,“time”:1.004,“touch”:{
“ms”:1000,“x”:1030,“y”:1145}}],[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1145}},{“action”:“wait”,“time”:1.004,“touch”:{“ms”:1000,“x”:1030,“y”:1145}}]]}}
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command of type ACTION
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command action: performMultiPointerGesture
[…]
[MJSONWP] Calling AppiumDriver.performMultiAction() with args: [[[{“action”:“press”,“options”:{“x”:1030,“y”:1170}},{“action”:“wait”,“options”:{“ms”:1000}},{“action”:“release”,“options”:[]}],[{“action”:“press”,"…
[debug] [AndroidBootstrap] Sending command to android: {“cmd”:“action”,“action”:“performMultiPointerGesture”,“params”:{“actions”:[[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1170}},{“action”:“wait”,“time”:1.004,“touch”:{“ms”:1000,“x”:1030,“y”:1170}}],[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1170}},{“action”:“wait”,“time”:1.004,“touch”:{“ms”:1000,“x”:1030,“y”:1170}}]]}}
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got data from client: {“cmd”:“action”,“action”:“performMultiPointerGesture”,“params”:{“actions”:[[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1170}},{“action”:“wait”,“time”:1.004,“touch”:{“ms”:1000,“x”:1030,“y”:1170}}],[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1170}},{“action”:“wait”,“time”:1.004,“touch”:{“ms”:1000,“x”:1030,“y”:1170}}]]}}
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command of type ACTION
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command action: performMultiPointerGesture
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Returning result: {“status”:0,“value”:“OK”}
[debug] [AndroidBootstrap] Received command result from bootstrap
[MJSONWP] Responding to client with driver.performMultiAction() result: “OK”
[HTTP] <-- POST /wd/hub/session/a625a5d9-6925-4485-bb61-4ef960cfed33/touch/multi/perform 200 4742 ms - 76
[HTTP] --> POST /wd/hub/session/a625a5d9-6925-4485-bb61-4ef960cfed33/touch/multi/perform {“actions”:[[{“action”:“press”,“options”:{“x”:1030,“y”:1175}},{“action”:“wait”,“options”:{“ms”:0}},{“action”:“release”,“options”:[]}],[{“action”:“press”,“options”:{“x”:1030,“y”:1175}},{“action”:“wait”,“options”:{“ms”:0}},{“action”:“release”,“options”:[]}]]}
[MJSONWP] Calling AppiumDriver.performMultiAction() with args: [[[{“action”:“press”,“options”:{“x”:1030,“y”:1175}},{“action”:“wait”,“options”:{“ms”:0}},{“action”:“release”,“options”:[]}],[{“action”:“press”,"opt…
[debug] [AndroidBootstrap] Sending command to android: {“cmd”:“action”,“action”:“performMultiPointerGesture”,“params”:{“actions”:[[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1175}},{“action”:“wait”,“time”:0.005,“touch”:{“ms”:0,“x”:1030,“y”:1175}}],[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1175}},{“action”:“wait”,“time”:0.005,“touch”:{“ms”:0,“x”:1030,“y”:1175}}]]}}
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got data from client: {“cmd”:“action”,“action”:“performMultiPointerGesture”,“params”:{“actions”:[[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1175}},{“action”:“wait”,“time”:0.005,“touch”:{“ms”:0,“x”:1030,“y”:1175}}],[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1175}},{“action”:“wait”,“time”:0.005,“touch”:{“ms”:0,“x”:1030,“y”:1175}}]]}}
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command of type ACTION
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command action: performMultiPoint
erGesture
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Returning result: {“status”:0,“value”:“OK”}
[debug] [AndroidBootstrap] Received command result from bootstrap
[MJSONWP] Responding to client with driver.performMultiAction() result: “OK”
[HTTP] <-- POST /wd/hub/session/a625a5d9-6925-4485-bb61-4ef960cfed33/touch/multi/perform 200 62 ms - 76
[HTTP] --> POST /wd/hub/session/a625a5d9-6925-4485-bb61-4ef960cfed33/touch/multi/perform {“actions”:[[{“action”:“press”,“options”:{“x”:1030,“y”:1175}},{“action”
:“wait”,“options”:{“ms”:500}},{“action”:“release”,“options”:[]}],[{“action”:“press”,“options”:{“x”:1030,“y”:1175}},{“action”:“wait”,“options”:{“ms”:500}},{“action”:“release”,“options”:[]}]]}
[MJSONWP] Calling AppiumDriver.performMultiAction() with args: [[[{“action”:“press”,“options”:{“x”:1030,“y”:1175}},{“action”:“wait”,“options”:{“ms”:500}},{“action”:“release”,“options”:[]}],[{“action”:“press”,“o…
[debug] [AndroidBootstrap] Sending command to android: {“cmd”:“action”,“action”:“performMultiPointerGesture”,“params”:{“actions”:[[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1175}},{“action”:“wait”,“time”:0.505,“touch”:{“ms”:500,“x”:1030,“y”:1175}}],[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1175}},{“action”:“wait”,“time”:0.505,“touch”:{“ms”:500,“x”:1030,“y”:1175}}]]}}
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got data from client: {“cmd”:“action”,“action”:“performMultiPointerGesture”,“params”:{“actions”:[[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1175}},{“action”:“wait”,“time”:0.505,“touch”:{“ms”:500,“x”:1030,“y”:1175}}],[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1175}},{“action”:“wait”,“time”:0.505,“touch”:{“ms”:500,“x”:1030,“y”:1175}}]]}}
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command of type ACTION
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command action: performMultiPointerGesture
[…]
[MJSONWP] Calling AppiumDriver.performMultiAction() with args: [[[{“action”:“press”,“options”:{“x”:1030,“y”:1210}},{“action”:“wait”,“options”:{“ms”:1000}},{“action”:“release”,“options”:[]}],[{“action”:“press”,”…
[debug] [AndroidBootstrap] Sending command to android: {“cmd”:“action”,“action”:“performMultiPointerGesture”,“params”:{“actions”:[[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1210}},{“action”:“wait”,“time”:1.004,“touch”:{“ms”:1000,“x”:1030,“y”:1210}}],[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1210}},{“action”:“wait”,“time”:1.004,“touch”:{“ms”:1000,“x”:1030,“y”:1210}}]]}}
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got data from client: {“cmd”:“action”,“action”:“performMultiPointerGesture”,“params”:{“actions”:[[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1210}},{“action”:“wait”,“time”:1.004,“touch”:{“ms”:1000,“x”:1030,“y”:1210}}],[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1210}},{“action”:“wait”,“time”:1.004,“touch”:{“ms”:1000,“x”:1030,“y”:1210}}]]}}
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command of type ACTION
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command action: performMultiPointerGesture
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Returning result: {“status”:0,“value”:“OK”}
[debug] [AndroidBootstrap] Received command result from bootstrap
[MJSONWP] Responding to client with driver.performMultiAction() result: “OK”
[HTTP] <-- POST /wd/hub/session/a625a5d9-6925-4485-bb61-4ef960cfed33/touch/multi/perform 200 4885 ms - 76
[HTTP] --> POST /wd/hub/session/a625a5d9-6925-4485-bb61-4ef960cfed33/touch/multi/perform {“actions”:[[{“action”:“press”,“options”:{“x”:1030,“y”:1215}},{“action”:“wait”,“options”:{“ms”:0}},{“action”:“release”,“options”:[]}],[{“action”:“press”,“options”:{“x”:1030,“y”:1215}},{“action”:“wait”,“options”:{“ms”:0}},{“action”:“release”,“options”:[]}]]}
[MJSONWP] Calling AppiumDriver.performMultiAction() with args: [[[{“action”:“press”,“options”:{“x”:1030,“y”:1215}},{“action”:“wait”,“options”:{“ms”:0}},{“action”:“release”,“options”:[]}],[{“action”:“press”,"opt…
[debug] [AndroidBootstrap] Sending command to android: {“cmd”:“action”,“action”:“performMultiPointerGesture”,“params”:{“actions”:[[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1215}},{“action”:“wait”,“time”:0.005,“touch”:{“ms”:0,“x”:1030,“y”:1215}}],[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1215}},{“action”:“wait”,“time”:0.005,“touch”:{“ms”:0,“x”:1030,“y”:1215}}]]}}
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got data from client: {“cmd”:“action”,“action”:“performMultiPointerGesture”,“params”:{“actions”:[[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1215}},{“action”:“wait”,“time”:0.005,“touch”:{“ms”:0,“x”:1030,“y”:1215}}],[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1215}},{“action”:“wait”,“time”:0.005,“touch”:{“ms”:0,“x”:1030,“y”:1215}}]]}}
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command of type ACTION
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command action: performMultiPointerGesture
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Returning result: {“status”:0,“value”:“OK”}
[debug] [AndroidBootstrap] Received command result from bootstrap
[MJSONWP] Responding to client with driver.performMultiAction() result: “OK”
[HTTP] <-- POST /wd/hub/session/a625a5d9-6925-4485-bb61-4ef960cfed33/touch/multi/perform 200 60 ms - 76
[HTTP] --> POST /wd/hub/session/a625a5d9-6925-4485-bb61-4ef960cfed33/touch/multi/perform {“actions”:[[{“action”:“press”,“options”:{“x”:1030,“y”:1215}},{“action”:“wait”,“options”:{“ms”:500}},{“action”:“release”,“options”:[]}],[{“action”:“press”,“options”:{“x”:1030,“y”:1215}},{“action”:“wait”,“options”:{“ms”:500}},{“action”:“release”,“options”:[]}]]}
[MJSONWP] Calling AppiumDriver.performMultiAction() with args: [[[{“action”:“press”,“options”:{“x”:1030,“y”:1215}},{“action”:“wait”,“options”:{“ms”:500}},{“action”:“release”,“options”:[]}],[{“action”:“press”,"o…
[debug] [AndroidBootstrap] Sending command to android: {“cmd”:“action”,“action”:“performMultiPointerGesture”,“params”:{“actions”:[[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1215}},{“action”:“wait”,“time”:0.505,“touch”:{“ms”:500,“x”:1030,“y”:1215}}],[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1215}},{“action”:“wait”,“time”:0.505,“touch”:{“ms”:500,“x”:1030,“y”:1215}}]]}}
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got data from client: {“cmd”:“action”,“action”:“performMultiPointerGesture”,“params”:{“actions”:[[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1215}},{“action”:“wait”,“time”:0.505,“touch”:{“ms”:500,“x”:1030,“y”:1215}}],[{“action”:“press”,“time”:0.005,“touch”:{“x”:1030,“y”:1215}},{“action”:“wait”,“time”:0.505,“touch”:{“ms”:500,“x”:1030,“y”:1215}}]]}}
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command of type ACTION
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command action: performMultiPointerGesture
[…]

FYI : I don’t known where the button is so I’m trying a brut force check to find it. For each; I’ve try different duration :
$this->tap(‘2’, $x, $y);
$this->tap(‘2’, $x, $y, 500);
$this->tap(‘2’, $x, $y, 1000);

Thanks for your help