Here is the thing, I`m mapping some elements from a specific screen and everything works fine, but when I change the android device the elements cannot be found (almost all android devices available here cant read the elements of this screen)
I`m using appium with cucumber and ruby language with real android devices
So the problem occurs in a particular screen (the app is hybrid and changing to webview did not solve the issue, this screen is native after all)
The elements can be found in a motorola g3 device with android 6.0 (native context), Im trying in others with different android versions and the elements are not found (moto g5, g6, some samsungs) when I debug the screen and type page in order to see if elements are visible by appium, it freezes and page method remains without any response until I return to previous screen and voilà, all elements are recognized instantly again running the same process, same thing occurs over and over again at the same screen, but when I change to another device it works, all elements are returned and no issue is presented in all attempts. The device which the server is running can
t map this screen also =/
So, since it has different behavior for different devices in same screen, I`m supposing that the app is working fine and some configuration is different between both (note: iOS emulator used can map this screen properly)
I compared all permision and settings from adb shell of app package (there are small differences regarding some android settings but nothing that could be related to the issue). Both devices are running the same apk package
When page method freezes
[debug] [AndroidBootstrap] Received command result from bootstrap
[debug] [MJSONWP] Responding to client with driver.getPageSource() result: “<?xml version=\"1.0\" encoding=\"UTF-8\"?><hierarchy rotation=“0”><android.widget.FrameLayout index=“0” text=”" class=“android.widget.FrameLayout” package=\EDITED" content-desc="" checkable=“false” checked=“false” clickable=“false” enabled=“true” focusable=“false” focused=“false” scrollable=“false” long-clickable=“false” password=“false” selected=“false” bounds="[324,849][755,999]" resource-id="" instance=“0”><android.widget.FrameLayout index=“0” text="" class=“android.widget.FrameLayout” package=\EDITED" content-desc="" checkable=“false” checked=“false” clickable=“false” enabled=“true” focusable=“false” focused=“false” scrollable=“false” long-clickable=“false” password=“false” selected=“false” bounds="[324,849][755,999]" resource-id="" instance=“1”><android.widget.FrameLayout index=“0” text="" class=“android.widget.FrameLayout” package=\EDITED" content-desc="" checkable=“false” checked="fa…
[HTTP] <-- GET /wd/hub/session/6f35fbfb-d855-49f1-9e8c-bf851e7ba6d6/source 200 30 ms - 3147
[HTTP]
[HTTP] --> GET /wd/hub/session/6f35fbfb-d855-49f1-9e8c-bf851e7ba6d6/source
[HTTP] {}
[debug] [MJSONWP] Calling AppiumDriver.getPageSource() with args: [“6f35fbfb-d855-49f1-9e8c-bf851e7ba6d6”]
[debug] [AndroidBootstrap] Sending command to android: {“cmd”:“action”,“action”:“source”,“params”:{}}
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got data from client: {“cmd”:“action”,“action”:“source”,“params”:{}}
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command of type ACTION
[debug] [AndroidBootstrap] [BOOTSTRAP LOG] [debug] Got command action: source
— No more return until changing the screen –
I’ve mapped the difference between both android settings, the code below is from device that is not working, the other does not show these configs (so I discarded this hypothesis). Other settings are exactly the same, so I removed from evidence here
android.permission.SYSTEM_ALERT_WINDOW: granted=true
android.permission.CHANGE_NETWORK_STATE: granted=true
android.permission.WRITE_CONTACTS: granted=true
android.permission.CAMERA: granted=true
android.permission.GET_ACCOUNTS: granted=true
android.permission.WRITE_EXTERNAL_STORAGE: granted=true
android.permission.WRITE_EXTERNAL_STORAGE: granted=true
android.permission.RECORD_AUDIO: granted=true
android.permission.READ_CONTACTS: granted=true