Need to change the orientation of app which is dependent on sensor
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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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