appium / appium/python-client

Need to change the orientation of app which is dependent on sensor

Open
#980 7 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
1.8k
Forks
570
Avg merge
1d 10h
Merged PRs (30d)
24

Description

The problem

I have a mobile app which opens in portrait mode and later I need to switch to landscape mode. I have tried all possible solutions but the app does not turn to landscape mode but if I minimize the app , my emulator screen is changed to landscape. My app rotation is dependent on the sensor. How can I handle this using appium with python. I am using Appium-Python-Client 4.0.0.

Environment

  • Appium version (or git revision) that exhibits the issue: v1.22.3
  • Last Appium version that did not exhibit the issue (if applicable):
  • Desktop OS/version used to run Appium: Windows 11
  • Node.js version (unless using Appium.app|exe):
  • Mobile platform/version under test: Android
  • Real device or emulator/simulator: Emulator
  • Appium CLI or Appium.app|exe: Appium CLI

Link to Appium Logs

[HTTP] <-- POST /wd/hub/session 200 8341 ms - 1017
[HTTP]
[HTTP] --> GET /wd/hub/session/532110c9-f52f-408a-b2a7-b0a476e3b315/orientation
[HTTP] {}
[W3C (532110c9)] Driver proxy active, passing request on via HTTP proxy
[debug] [WD Proxy] Matched '/wd/hub/session/532110c9-f52f-408a-b2a7-b0a476e3b315/orientation' to command name 'getOrientation'
[debug] [WD Proxy] Proxying [GET /wd/hub/session/532110c9-f52f-408a-b2a7-b0a476e3b315/orientation] to [GET http://127.0.0.1:8203/wd/hub/session/cf21f8fe-7a33-44b8-94ad-1b8b62efc047/orientation] with no body
[debug] [WD Proxy] Got response with status 200: {"sessionId":"cf21f8fe-7a33-44b8-94ad-1b8b62efc047","value":"PORTRAIT"}
[WD Proxy] Replacing sessionId cf21f8fe-7a33-44b8-94ad-1b8b62efc047 with 532110c9-f52f-408a-b2a7-b0a476e3b315
[HTTP] <-- GET /wd/hub/session/532110c9-f52f-408a-b2a7-b0a476e3b315/orientation 200 1378 ms - 71
[HTTP]
[HTTP] --> GET /wd/hub/session/532110c9-f52f-408a-b2a7-b0a476e3b315/orientation
[HTTP] {}
[W3C (532110c9)] Driver proxy active, passing request on via HTTP proxy
[debug] [WD Proxy] Matched '/wd/hub/session/532110c9-f52f-408a-b2a7-b0a476e3b315/orientation' to command name 'getOrientation'
[debug] [WD Proxy] Proxying [GET /wd/hub/session/532110c9-f52f-408a-b2a7-b0a476e3b315/orientation] to [GET http://127.0.0.1:8203/wd/hub/session/cf21f8fe-7a33-44b8-94ad-1b8b62efc047/orientation] with no body
[debug] [WD Proxy] Got response with status 200: {"sessionId":"cf21f8fe-7a33-44b8-94ad-1b8b62efc047","value":"PORTRAIT"}
[WD Proxy] Replacing sessionId cf21f8fe-7a33-44b8-94ad-1b8b62efc047 with 532110c9-f52f-408a-b2a7-b0a476e3b315
[HTTP] <-- GET /wd/hub/session/532110c9-f52f-408a-b2a7-b0a476e3b315/orientation 200 19 ms - 71
[HTTP]
[HTTP] --> POST /wd/hub/session/532110c9-f52f-408a-b2a7-b0a476e3b315/orientation
[HTTP] {"orientation":"LANDSCAPE"}
[W3C (532110c9)] Driver proxy active, passing request on via HTTP proxy
[debug] [WD Proxy] Matched '/wd/hub/session/532110c9-f52f-408a-b2a7-b0a476e3b315/orientation' to command name 'setOrientation'
[debug] [WD Proxy] Proxying [POST /wd/hub/session/532110c9-f52f-408a-b2a7-b0a476e3b315/orientation] to [POST http://127.0.0.1:8203/wd/hub/session/cf21f8fe-7a33-44b8-94ad-1b8b62efc047/orientation] with body: {"orientation":"LANDSCAPE"}
[WD Proxy] Got response with status 400: {"sessionId":"cf21f8fe-7a33-44b8-94ad-1b8b62efc047","value":{"error":"invalid element state","message":"Screen rotation cannot be changed to ROTATION_270 after 2000ms. Is it locked programmatically?","stacktrace":"io.appium.uiautomator2.common.exceptions.InvalidElementStateException: Screen rotation cannot be changed to ROTATION_270 after 2000ms. Is it locked programmatically?\n\tat io.appium.uiautomator2.model.internal.CustomUiDevice.setRotationSync(CustomUiDevice.java:184)\n\tat io.appium.uiautomator2.handler.SetOrientation.safeHandle(SetOrientation.java:41)\n\tat io.appium.uiautomator2.handler.request.SafeRequestHandler.handle(SafeRequestHandler.java:59)\n\tat io.appium.uiautomator2.server.AppiumServlet.handleRequest(AppiumServlet.java:266)\n\tat io.appium.uiautomator2.server.AppiumServlet.handleHttpRequest(AppiumServlet.java:260)\n\tat io.appium.uiautomator2.http.ServerHandler.channelRead(ServerHandler.java:68)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandle...
[debug] [W3C] Matched W3C error code 'invalid element state' to InvalidElementStateError
[HTTP] <-- POST /wd/hub/session/532110c9-f52f-408a-b2a7-b0a476e3b315/orientation 400 2068 ms - 3926

Code To reproduce issue

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the Appium-Python-Client orientation endpoint shown in the logs, especially the POST request setting LANDSCAPE and the Android driver error. Reproduce the behavior on the stated Android emulator and Appium versions, then determine whether the client or the underlying driver owns the failure. Done means identifying a clear, reproducible scope and expected orientation behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
mobile, testing-qa
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.