# Appium "send\_keys" method is not working

**URL:** <https://community.amazondeveloper.com/t/appium-send-keys-method-is-not-working/27688>\
**Category:** Bug Reports\
**Created:** [February 16, 2026, 8:47pm UTC](https://community.amazondeveloper.com/t/appium-send-keys-method-is-not-working/27688 "2026-02-16T20:47:21Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sukhbat](https://avatars.discourse-cdn.com/v4/letter/s/9e8a1a/32.png) [@Sukhbat](https://community.amazondeveloper.com/u/Sukhbat)\
**Post date:** [February 16, 2026, 8:47pm UTC](https://community.amazondeveloper.com/t/appium-send-keys-method-is-not-working/27688/1 "2026-02-16T20:47:21Z")

</div>

# 👉 Bug Description

* * *

## 1. Summary

_I am trying to do automated test on an application, using Appium. I can locate the search element using find\_element method. However send\_keys method is not doing anything._

**Bug Severity**  
Select one that applies

- Impacts operation of app
- Blocks current development
- Improvement suggestion
- Issue with documentation (If selected, please share the doc link and describe the issue)
- Other

## 2. Steps to Reproduce

1. `Python script to connect to driver and find element of the search box and .send_keys("blabla")`

## 3. Observed Behavior

_Explain what actually happened, noting any discrepancies or malfunctions._

```auto
Method did not return or thrown any errors. Script just ended successfully.

```

## 4. Expected Behavior

_Describe what you expected the SDK to do under normal operation._

```auto
Expected to write the keys on the screen search box

```

### 4.a Possible Root Cause & Temporary Workaround

```auto
Thought that the element was wrong, but confirmed that it was correct with Appium inspector.

```

## 5. Logs or crash report

No crashes, no exceptions.

APPIUM LOG:  
Running /element with strategy=UiSelector, selector={“args”:{ “role”: “edit” }}  
Sending jsonRPC POST [http://127.0.0.1:15970/jsonrpc](http://127.0.0.1:15970/jsonrpc) id=0, method=findObjects, params object={“args”:{“role”:“edit”},“selectorStrategy”:“UiSelector”}  
received jsonrpc response in 441ms (http 200 OK): {“id”:“0”,“jsonrpc”:“2.0”,“result”:[158913791613]}  
[KeplerDriver@6d1b] Responding to client with driver.findElement() result: {“ELEMENT”:“158913791613”,“element-6066-11e4-a52e-4f735466cecf”:“158913791613”}  
[HTTP] ← POST /session/0a8779ab-3685-41d1-a7da-cb138c4b6344/element 200 442 ms - 89  
[HTTP] → POST /session/0a8779ab-3685-41d1-a7da-cb138c4b6344/element/158913791613/value {“text”:“the quick brown fox”,“value”:[“t”,“h”,“e”," “,“q”,“u”,“i”,“c”,“k”,” “,“b”,“r”,“o”,“w”,“n”,” “,“f”,“o”,“x”]}  
[KeplerDriver@6d1b] Calling AppiumDriver.setValue() with args: [[“t”,“h”,“e”,” “,“q”,“u”,“i”,“c”,“k”,” “,“b”,“r”,“o”,“w”,“n”,” ",“f”,“o”,“x”],“158913791613”,“0a8779ab-3685-41d1-a7da-cb138c4b6344”]  
Running /executeScript with script=setValue, args=[  
[  
‘t’, ‘h’,  
‘e’, ’ ',  
‘q’, ‘u’,  
‘i’, ‘c’,  
‘k’, ’ ',  
‘b’, ‘r’,  
‘o’, ‘w’,  
‘n’, ’ ',  
‘f’, ‘o’,  
‘x’, [length]: 19  
],  
‘158913791613’,  
‘0a8779ab-3685-41d1-a7da-cb138c4b6344’,  
[length]: 3  
]  
Running /element/158913791613/value with keys=[  
‘t’, ‘h’, ‘e’, ’ ', ‘q’,  
‘u’, ‘i’, ‘c’, ‘k’, ’ ',  
‘b’, ‘r’, ‘o’, ‘w’, ‘n’,  
’ ', ‘f’, ‘o’, ‘x’  
]  
Sending jsonRPC POST [http://127.0.0.1:15970/jsonrpc](http://127.0.0.1:15970/jsonrpc) id=0, method=setText, params object={“id”:158913791613,“text”:“the quick brown fox”}  
received jsonrpc response in 194ms (http 200 OK): {“id”:“0”,“jsonrpc”:“2.0”,“result”:false}

## 6. Environment

_Please fill out the fields related to your bug below:_

- **SDK Version:** _`v0.22`_

- **App State:** `Foreground`

- **OS Information:**

## 7. Example Code Snippet / Screenshots / Screengrabs

_Include any relevant code or component setup in React Native that can help reproduce the bug._

```auto
device_serial = "192.168.1.21:5555"
desired_caps = { "platformName": "Kepler", "appium:automationName": "automation-toolkit/JSON-RPC", "kepler:device": f"vda://{device_serial}"}
def appium_session(): appium_options = AppiumOptions() appium_options.load_capabilities(desired_caps) driver = webdriver.Remote('http://127.0.0.1:44557', options=appium_options) return driver
d = appium_session()
#Display already on the correct screen
editableEle = d.find_element("UiSelector", '{"args":{ "role": "edit" }}')
editableEle.send_keys("the quick brown fox")

```

---

<div class="post-metadata">

**Author:** ![amen](https://avatars.discourse-cdn.com/v4/letter/a/ee7513/32.png) [@amen](https://community.amazondeveloper.com/u/amen)\
**Post date:** [February 16, 2026, 11:50pm UTC](https://community.amazondeveloper.com/t/appium-send-keys-method-is-not-working/27688/3 "2026-02-16T23:50:55Z")

</div>

Hi @Sukhbat,

Welcome to Amazon Developer Community!!

Thank you for reporting this issue. The send\_keys() method is currently not working due to the setText JSON-RPC call returning false.

### **Workaround**

**Use injectInputKeyEvent:** Based on fixes for related issues, try using the JSON-RPC method directly:

```python
# 1. Focus the element first
editableEle = d.find_element("UiSelector", '{"args":{ "role": "edit" }}')
editableEle.click()
time.sleep(0.5) # Give it time to focus

# 2. Send text character by character using key events
text = "the quick brown fox"
for char in text:
    if char == ' ':
        # Space key (keycode 62)
        d.execute_script("jsonrpc: injectInputKeyEvent",
                        [{"inputKeyEvent": "62", "holdDuration": 100}])
    else:
        # For alphanumeric characters, you may need to map to keycodes
        # Or try the mobile: type command
        d.execute_script("mobile: type", [{"text": char}])
    time.sleep(0.05) # Small delay between characters

```

**Verify Element State:** Ensure the element is ready to receive input:

```python
editableEle = d.find_element("UiSelector", '{"args":{ "role": "edit" }}')
editableEle.click()
time.sleep(0.5)

# Check if element is enabled and ready
print(f"Element enabled: {editableEle.is_enabled()}")
print(f"Element displayed: {editableEle.is_displayed()}")

```

Could you please try out these workarounds and let us know if they resolve your issue?

Feel free to reach back to me if you have any questions!

Thanks for helping us improve the Vega platform.

Warm regards,  
Aishwarya

---

<div class="post-metadata">

**Author:** ![Sukhbat](https://avatars.discourse-cdn.com/v4/letter/s/9e8a1a/32.png) [@Sukhbat](https://community.amazondeveloper.com/u/Sukhbat)\
**Post date:** [February 17, 2026, 1:07am UTC](https://community.amazondeveloper.com/t/appium-send-keys-method-is-not-working/27688/4 "2026-02-17T01:07:04Z")

</div>

> [@amen](#):
>
> ```auto
> text = "the quick brown fox"
> for char in text:
> if char == ' ':
> # Space key (keycode 62)
> d.execute_script("jsonrpc: injectInputKeyEvent",
> [{"inputKeyEvent": "62", "holdDuration": 100}])
> else:
> # For alphanumeric characters, you may need to map to keycodes
> # Or try the mobile: type command
> d.execute_script("mobile: type", [{"text": char}])
> time.sleep(0.05) # Small delay between characters
> 
> ```

This is the exception on command `d.execute_script("mobile: type", [{"text": char}])`  
`Stacktrace:`  
`UnknownError: An unknown server-side error occurred while processing the command. Original error: Cannot execute ‘mobile: type’. Only commands that begin with 'jsonrpc: ’ or 'shell: ’ are supported.`  
`at getResponseForW3CError (/opt/homebrew/lib/node_modules/appium/node_modules/@appium/base-driver/lib/protocol/errors.js:1143:9)`  
`at asyncHandler (/opt/homebrew/lib/node_modules/appium/node_modules/@appium/base-driver/lib/protocol/protocol.js:487:57)`

ALSO:

Tried using command `injectInputKeyEvent` like this to type just one letter “ **A** ”. Did not work.

> <https://github.com/torvalds/linux/blob/master/include/uapi/linux/input-event-codes.h>

```auto
d.execute_script("jsonrpc: injectInputKeyEvent",[{"inputKeyEvent": 30 , "holdDuration": 100 }])

```

![image](https://d3mq594dkmpl37.cloudfront.net/original/2X/a/a016b28837f854bccffd8e2e0855c0fe170c3534.png)

---

<div class="post-metadata">

**Author:** ![amen](https://avatars.discourse-cdn.com/v4/letter/a/ee7513/32.png) [@amen](https://community.amazondeveloper.com/u/amen)\
**Post date:** [February 17, 2026, 3:34pm UTC](https://community.amazondeveloper.com/t/appium-send-keys-method-is-not-working/27688/5 "2026-02-17T15:34:02Z")

</div>

Hi @Sukhbat,

Thank you for trying out the workarounds and providing the detailed error information!

From the documentation [https://developer.amazon.com/docs/vega/0.21/appium-commands.html](https://developer.amazon.com/docs/vega/0.21/appium-commands.html), our team has prepared a simple Appium script where we are waiting for the keyboard to be available before typing, and it is working as expected.

Script: [appium\_search\_test.py](https://community.amazondeveloper.com/uploads/short-url/yTWt0v3WLwaNIOtg988HUvtR2hb.py) (4.5 KB)

Please add a small wait for the keyboard to be available before typing.

This approach follows the official documentation which states: _“send\_keys doesn’t open or close the keyboard automatically. To open the keyboard, click any editable item.”_

Let us know if this resolves your issue!

Warm regards,  
Aishwarya

---

<div class="post-metadata">

**Author:** ![Sukhbat](https://avatars.discourse-cdn.com/v4/letter/s/9e8a1a/32.png) [@Sukhbat](https://community.amazondeveloper.com/u/Sukhbat)\
**Post date:** [February 18, 2026, 6:57pm UTC](https://community.amazondeveloper.com/t/appium-send-keys-method-is-not-working/27688/6 "2026-02-18T18:57:52Z")

</div>

Thank you.  
Is there any programmatic way to know if keyboard is available or not?

---

<div class="post-metadata">

**Author:** ![amen](https://avatars.discourse-cdn.com/v4/letter/a/ee7513/32.png) [@amen](https://community.amazondeveloper.com/u/amen)\
**Post date:** [February 19, 2026, 4:40pm UTC](https://community.amazondeveloper.com/t/appium-send-keys-method-is-not-working/27688/7 "2026-02-19T16:40:03Z")

</div>

Hi @Sukhbat,

**Programmatic Keyboard Detection for Appium on Vega**

To detect keyboard availability, use `driver.page_source` to check for `"Keyboard Layer"` in the UI tree. The solution polls every 0.5 seconds with a 10-second timeout.

**Implementation approach:**

- Click the editable element to trigger keyboard
- Poll `page_source` for “Keyboard Layer” string
- Proceed with `send_keys()` once keyboard is detected

**Reference** : [Appium Commands | Design and Develop Vega Apps](http://developer.amazon.com/docs/vega/0.21/appium-commands.html#get_page_source)

Tested and working as expected. Updated script attached: [appium\_search\_test-1.py](https://community.amazondeveloper.com/uploads/short-url/nnDYHO6SXVCCanOAPDGbo2UOhob.py) (6.4 KB)

Warm regards,  
Aishwarya

---

<div class="post-metadata">

**Author:** ![system](https://dhm3gbtzu79o6.cloudfront.net/user_avatar/community.amazondeveloper.com/system/32/5065_2.png) [@system](https://community.amazondeveloper.com/u/system)\
**Post date:** [March 5, 2026, 4:40pm UTC](https://community.amazondeveloper.com/t/appium-send-keys-method-is-not-working/27688/8 "2026-03-05T16:40:22Z")

</div>

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.
