Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bug: Appium XCUITest crashes the iOS app on clearing the input XCUIElementTypeTextField #20088

Closed
3 tasks done
itkhanz opened this issue May 10, 2024 · 3 comments
Closed
3 tasks done
Labels
Needs Info typically non-actionable; needs author to respond

Comments

@itkhanz
Copy link

itkhanz commented May 10, 2024

Do I have the most recent component updates?

  • I use the most recent available driver/plugin and server versions

Is the component officially supported by the Appium team?

  • I have verified the component repository is present under the Appium organization in GitHub

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

Hi,
I have faced a strange issue today where Appium causes iOS app to crash if I send the clear() command on WebElement that is of type XCUIElementTypeTextField. The problem is not specific to any client binding but rather i can also reproduce this with Appium Inspector so I suspect problem lies in Appium server or XCUITest driver.

on reaching the statement textField.clear();, it throws StaleElementReferenceException and closes the application:-

org.openqa.selenium.StaleElementReferenceException: The previously found element ""0.00" TextField" is not present in the current view anymore. Make sure the application UI has the expected state. Original error: Application com.xxxxxxx.xxxxxx.xxxxxx is not running
For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#stale-element-reference-exception
Build info: version: '4.19.0', revision: '5f9cec8963'
System info: os.name: 'Mac OS X', os.arch: 'aarch64', os.version: '14.4.1', java.version: '17.0.2'
Driver info: io.appium.java_client.ios.IOSDriver
Command: [f1cf76e9-a01a-4b05-863d-5a957ead1e36, clearElement {id=38010000-0000-0000-3A23-000000000000}]
Capabilities {appium:automationName: XCUITest, platformName: IOS, .....................}
Element: [[IOSDriver:  on IOS (f1cf76e9-a01a-4b05-863d-5a957ead1e36)] -> class name: XCUIElementTypeTextField]
Session ID: f1cf76e9-a01a-4b05-863d-5a957ead1e36
	at java.base@17.0.2/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base@17.0.2/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
	at java.base@17.0.2/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base@17.0.2/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
	at java.base@17.0.2/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
	at app//org.openqa.selenium.remote.ErrorCodec.decode(ErrorCodec.java:167)
	at app//org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:138)
	at app//org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:50)
	at app//org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:190)
	at app//io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:237)
	at app//org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:518)
	at app//org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:223)
	at app//org.openqa.selenium.remote.RemoteWebElement.clear(RemoteWebElement.java:129)
	at java.base@17.0.2/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base@17.0.2/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base@17.0.2/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base@17.0.2/java.lang.reflect.Method.invoke(Method.java:568)
	at app//io.appium.java_client.pagefactory.ElementInterceptor.getObject(ElementInterceptor.java:42)
	at app//io.appium.java_client.pagefactory.interceptors.InterceptorOfASingleElement.call(InterceptorOfASingleElement.java:79)
	at app//io.appium.java_client.proxy.Interceptor.intercept(Interceptor.java:78)
	at org.openqa.selenium.remote.RemoteWebElement$ByteBuddy$nYQqEM2x.clear(Unknown Source)
	at app//com.dcs.appium.dcsapps.Tests.dummy.DebugTest.test_reimbursement(DebugTest.java:19)
	at java.base@17.0.2/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base@17.0.2/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base@17.0.2/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base@17.0.2/java.lang.reflect.Method.invoke(Method.java:568)

For some unknown reasosn, I understand the StaleElementReferenceException but I dont understand why it is crashing the app also.

Appium Logs:-

[XCUITestDriver@f18a (b223f3d3)] Driver proxy active, passing request on via HTTP proxy
[XCUITestDriver@f18a (b223f3d3)] Executing command 'proxyReqRes'
[XCUITestDriver@f18a (b223f3d3)] Matched '/session/b223f3d3-a33c-47ff-bc43-dedf4b5e50c1/element/22000000-0000-0000-DE95-000000000000/click' to command name 'click'
[XCUITestDriver@f18a (b223f3d3)] Proxying [POST /session/b223f3d3-a33c-47ff-bc43-dedf4b5e50c1/element/22000000-0000-0000-DE95-000000000000/click] to [POST http://127.0.0.1:8100/session/F8518BA8-29E5-42E0-84CB-531D160DFB26/element/22000000-0000-0000-DE95-000000000000/click] with body: {}
[XCUITestDriver@f18a (b223f3d3)] Got response with status 200: {"value":null,"sessionId":"F8518BA8-29E5-42E0-84CB-531D160DFB26"}
[XCUITestDriver@f18a (b223f3d3)] Replacing sessionId F8518BA8-29E5-42E0-84CB-531D160DFB26 with b223f3d3-a33c-47ff-bc43-dedf4b5e50c1
[HTTP] <-- POST /session/b223f3d3-a33c-47ff-bc43-dedf4b5e50c1/element/22000000-0000-0000-DE95-000000000000/click 200 568 ms - 65
[HTTP] 
[HTTP] --> GET /session/b223f3d3-a33c-47ff-bc43-dedf4b5e50c1/screenshot
[HTTP] {}
[XCUITestDriver@f18a (b223f3d3)] Calling AppiumDriver.getScreenshot() with args: ["b223f3d3-a33c-47ff-bc43-dedf4b5e50c1"]
[XCUITestDriver@f18a (b223f3d3)] Executing command 'getScreenshot'
[XCUITestDriver@f18a (b223f3d3)] Taking screenshot with WDA
[XCUITestDriver@f18a (b223f3d3)] Matched '/screenshot' to command name 'getScreenshot'
[XCUITestDriver@f18a (b223f3d3)] Proxying [GET /screenshot] to [GET http://127.0.0.1:8100/session/F8518BA8-29E5-42E0-84CB-531D160DFB26/screenshot] with no body
[XCUITestDriver@f18a (b223f3d3)] Got response with status 200: {"value":"iVBORw0KGgoAAAANSUhEUgAABQoAAArsCAIAAAAXalN5AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAgESAAMAAAABAAEAAIdpAAQAAAABAAAAJgAAAAAAAqACAAQAAAABAAAFCqADAAQAAAABAAAK7AAAAAAT/V2lAABAAElEQVR4AezdB9jUVP728QXpHaT3IkWkSFdUQBEUEBEVy6pYsWPvrgKWtaCAZVXAigULSJEqCoKAoIJSpXfpSBMEBHnvZf5vNp5k8kyfTJ4v115ucuYkOeeTMMwvp+U4evToP/iDAAIIIIAAAggggAACCCCAQPYWyJm9q0/tEUAAAQQQQAABBBBAAAEEEPivAOExzwECCCCAAAIIIIAAAggggAAChMc8AwgggAACCCCAAAIIIIAAAgjQeswzgAACCCCAAAIIIIAAAggggIAE6FzNY4AAAggggAACCCCAAAIIIIAA4THPAAIIIIAAAggggAACCCCAAAK0HvMMIIAAAggggAACCCCAAAIIICABOlfzGCCAAAIIIIAAAggggAACCCBAeMwzgAACCCCAAAIIIIAAAggggACtxzwDCCCAAAIIIIAAAggggAACCEiAztU8BggggAACCCCAAAIIIIAAAggQHvMMIIAAAggggAACCCCAAAIIIEDrMc8AAggggAACCCCAAAIIIIAAAhKgczWPAQIIIIAAAggggAACCCCAAAKExzwDCCCAAAIIIIAAAggggAACCNB6zDOAAAIIIIAAAggggAACCCCAgAToXM1jgAACCCCAAAIIIIAAAggggADhMc8AAggggAACCCCAAAIIIIAAArQe8wwggAACCCCAAAIIIIAAAgggIAE6V/MYIIAAAggggAACCCCAAAIIIEB4zDOAAAIIIIAAAggggAACCCCAAK3HPAMIIIAAAggggAACCCCAAAIISIDO1TwGCCCAAAIIIIAAAggggAACCBAe8wwggAACCCCAAAIIIIAAAgggQOsxzwA...
[XCUITestDriver@f18a (b223f3d3)] Responding to client with driver.getScreenshot() result: "iVBORw0KGgoAAAANSUhEUgAABQoAAArsCAIAAAAXalN5AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAgESAAMAAAABAAEAAIdpAAQAAAABAAAAJgAAAAAAAqACAAQAAAABAAAFCqADAAQAAAABAAAK7AAAAAAT/V2lAABAAElEQVR4AezdB9jUVP728QXpHaT3IkWkSFdUQBEUEBEVy6pYsWPvrgKWtaCAZVXAigULSJEqCoKAoIJSpXfpSBMEBHnvZf5vNp5k8kyfTJ4v115ucuYkOeeTMMwvp+U4evToP/iDAAIIIIAAAggggAACCCCAQPYWyJm9q0/tEUAAAQQQQAABBBBAAAEEEPivAOExzwECCCCAAAIIIIAAAggggAAChMc8AwgggAACCCCAAAIIIIAAAgjQeswzgAACCCCAAAIIIIAAAggggIAE6FzNY4AAAggggAACCCCAAAIIIIAA4THPAAIIIIAAAggggAACCCCAAAK0HvMMIIAAAggggAACCCCAAAIIICABOlfzGCCAAAIIIIAAAggggAACCCBAeMwzgAACCCCAAAIIIIAAAggggACtxzwDCCCAAAIIIIAAAggggAACCEiAztU8BggggAACCCCAAAIIIIAAAggQHvMMIIAAAggggAACCCCAAAIIIEDrMc8AAggggAACCCCAAAIIIIAAAhKgczWPAQIIIIAAAggggAACCCCAAAKExzwDCCCAAAIIIIAAAggggAACCNB6zDOAAAIIIIAAAggggAACCCCAgAToXM1jgAACCCCAAAIIIIAAAggggADhMc8AAggggAACCCCAAAIIIIAAArQe8wwggAACCCCAAAIIIIAAAgggIAE6V/MYIIAAAggggAACCCCAAAIIIEB4zDOAAAIIIIAAAggggAACCCCAAK3HPAMIIIAAAggggAACCCCAAAIISIDO1TwGCCCAAAIIIIAAAggggAACCBAe8wwggAACCCCAAAIIIIAAAgggQOsxzwACCCCAAAII...
[HTTP] <-- GET /session/b223f3d3-a33c-47ff-bc43-dedf4b5e50c1/screenshot 200 116 ms - 226252
[HTTP] 
[HTTP] --> GET /session/b223f3d3-a33c-47ff-bc43-dedf4b5e50c1/window/rect
[HTTP] {}
[XCUITestDriver@f18a (b223f3d3)] Calling AppiumDriver.getWindowRect() with args: ["b223f3d3-a33c-47ff-bc43-dedf4b5e50c1"]
[XCUITestDriver@f18a (b223f3d3)] Executing command 'getWindowRect'
[XCUITestDriver@f18a (b223f3d3)] Proxying [GET /window/size] to [GET http://127.0.0.1:8100/session/F8518BA8-29E5-42E0-84CB-531D160DFB26/window/size] with no body
[XCUITestDriver@f18a (b223f3d3)] Got response with status 200: {"value":{"width":430,"height":932},"sessionId":"F8518BA8-29E5-42E0-84CB-531D160DFB26"}
[XCUITestDriver@f18a (b223f3d3)] Responding to client with driver.getWindowRect() result: {"width":430,"height":932,"x":0,"y":0}
[HTTP] <-- GET /session/b223f3d3-a33c-47ff-bc43-dedf4b5e50c1/window/rect 304 41 ms - -
[HTTP] 
[HTTP] --> GET /session/b223f3d3-a33c-47ff-bc43-dedf4b5e50c1/source
[HTTP] {}
[XCUITestDriver@f18a (b223f3d3)] Calling AppiumDriver.getPageSource() with args: ["b223f3d3-a33c-47ff-bc43-dedf4b5e50c1"]
[XCUITestDriver@f18a (b223f3d3)] Executing command 'getPageSource'
[XCUITestDriver@f18a (b223f3d3)] Matched '/source?format=xml&scope=AppiumAUT' to command name 'getPageSource'
[XCUITestDriver@f18a (b223f3d3)] Proxying [GET /source?format=xml&scope=AppiumAUT] to [GET http://127.0.0.1:8100/session/F8518BA8-29E5-42E0-84CB-531D160DFB26/source?format=xml&scope=AppiumAUT] with no body
[XCUITestDriver@f18a (b223f3d3)] Got response with status 200: {"value":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<AppiumAUT>\n  <XCUIElementTypeApplication type=\"XCUIElementTypeApplication\" name=\"CHARGE NOW for Business\" label=\"CHARGE NOW for Business\" enabled=\"true\" visible=\"true\" accessible=\"false\" x=\"0\" y=\"0\" width=\"430\" height=\"932\" index=\"0\">\n    <XCUIElementTypeWindow type=\"XCUIElementTypeWindow\" enabled=\"true\" visible=\"true\" accessible=\"false\" x=\"0\" y=\"0\" width=\"430\" height=\"932\" index=\"0\">\n      <XCUIElementTypeOther type=\"XCUIElementTypeOther\" enabled=\"true\" visible=\"false\" accessible=\"false\" x=\"0\" y=\"0\" width=\"430\" height=\"932\" index=\"0\">\n        <XCUIElementTypeOther type=\"XCUIElementTypeOther\" enabled=\"true\" visible=\"false\" accessible=\"false\" x=\"0\" y=\"0\" width=\"430\" height=\"932\" index=\"0\"/>\n      </XCUIElementTypeOther>\n      <XCUIElementTypeOther type=\"XCUIElementTypeOther\" enabled=\"true\" visible=\"false\" accessible=\"false\" x=\"0\" y=\"0\" width=\"430\" height=\"93...
[XCUITestDriver@f18a (b223f3d3)] Responding to client with driver.getPageSource() result: "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<AppiumAUT>\n  <XCUIElementTypeApplication type=\"XCUIElementTypeApplication\" name=\"CHARGE NOW for Business\" label=\"CHARGE NOW for Business\" enabled=\"true\" visible=\"true\" accessible=\"false\" x=\"0\" y=\"0\" width=\"430\" height=\"932\" index=\"0\">\n    <XCUIElementTypeWindow type=\"XCUIElementTypeWindow\" enabled=\"true\" visible=\"true\" accessible=\"false\" x=\"0\" y=\"0\" width=\"430\" height=\"932\" index=\"0\">\n      <XCUIElementTypeOther type=\"XCUIElementTypeOther\" enabled=\"true\" visible=\"false\" accessible=\"false\" x=\"0\" y=\"0\" width=\"430\" height=\"932\" index=\"0\">\n        <XCUIElementTypeOther type=\"XCUIElementTypeOther\" enabled=\"true\" visible=\"false\" accessible=\"false\" x=\"0\" y=\"0\" width=\"430\" height=\"932\" index=\"0\"/>\n      </XCUIElementTypeOther>\n      <XCUIElementTypeOther type=\"XCUIElementTypeOther\" enabled=\"true\" visible=\"false\" accessible=\"false\" x=\"0\" y=\"0\" width=\"430\" height=\"932\" index...
[HTTP] <-- GET /session/b223f3d3-a33c-47ff-bc43-dedf4b5e50c1/source 304 450 ms - -
[HTTP] 
[HTTP] --> POST /session/b223f3d3-a33c-47ff-bc43-dedf4b5e50c1/element/22000000-0000-0000-DE95-000000000000/clear
[HTTP] {}
[XCUITestDriver@f18a (b223f3d3)] Calling AppiumDriver.clear() with args: ["22000000-0000-0000-DE95-000000000000","b223f3d3-a33c-47ff-bc43-dedf4b5e50c1"]
[XCUITestDriver@f18a (b223f3d3)] Executing command 'clear'
[XCUITestDriver@f18a (b223f3d3)] Matched '/element/22000000-0000-0000-DE95-000000000000/clear' to command name 'clear'
[XCUITestDriver@f18a (b223f3d3)] Proxying [POST /element/22000000-0000-0000-DE95-000000000000/clear] to [POST http://127.0.0.1:8100/session/F8518BA8-29E5-42E0-84CB-531D160DFB26/element/22000000-0000-0000-DE95-000000000000/clear] with no body
[HTTP] --> GET /session/b223f3d3-a33c-47ff-bc43-dedf4b5e50c1/timeouts
[HTTP] {}
[XCUITestDriver@f18a (b223f3d3)] Calling AppiumDriver.getTimeouts() with args: ["b223f3d3-a33c-47ff-bc43-dedf4b5e50c1"]
[XCUITestDriver@f18a (b223f3d3)] Executing command 'getTimeouts'
[XCUITestDriver@f18a (b223f3d3)] Got response with status 404: {"value":{"error":"stale element reference","message":"The previously found element \"\"0,15\" TextField\" is not present in the current view anymore. Make sure the application UI has the expected state. Original error: Application com.xxxxxx.xxxxx.xxxx is not running","traceback":"(\n\t0   CoreFoundation                      0x0000000180491128 __exceptionPreprocess + 172\n\t1   libobjc.A.dylib                     0x000000018008412c objc_exception_throw + 56\n\t2   WebDriverAgentLib                   0x0000000105b95bb0 -[XCUIElement(FBUtilities) fb_takeSnapshot] + 756\n\t3   WebDriverAgentLib                   0x0000000105b9f268 -[XCUIElement(FBTyping) fb_clearTextWithSnapshot:shouldPrepareForInput:error:] + 932\n\t4   WebDriverAgentLib                   0x0000000105b9ee94 -[XCUIElement(FBTyping) fb_clearTextWithError:] + 344\n\t5   WebDriverAgentLib                   0x0000000105bd73b0 +[FBElementCommands handleClear:] + 240\n\t6   WebDriverAgentLib                   0x0000000105b6...
[W3C] Matched W3C error code 'stale element reference' to StaleElementReferenceError
[XCUITestDriver@f18a (b223f3d3)] Encountered internal error running command: StaleElementReferenceError: The previously found element ""0,15" TextField" is not present in the current view anymore. Make sure the application UI has the expected state. Original error: Application com.xxxxx.xxxxx.xxxxx is not running
[XCUITestDriver@f18a (b223f3d3)]     at errorFromW3CJsonCode (/Users/xxxxxxx/.appium/node_modules/appium-xcuitest-driver/node_modules/@appium/base-driver/lib/protocol/errors.js:1085:25)
[XCUITestDriver@f18a (b223f3d3)]     at ProxyRequestError.getActualError (/Users/xxxxxxxx/.appium/node_modules/appium-xcuitest-driver/node_modules/@appium/base-driver/lib/protocol/errors.js:954:14)
[XCUITestDriver@f18a (b223f3d3)]     at JWProxy.command (/Users/xxxxx/.appium/node_modules/appium-xcuitest-driver/node_modules/@appium/base-driver/lib/jsonwp-proxy/proxy.js:353:19)
[XCUITestDriver@f18a (b223f3d3)]     at processTicksAndRejections (node:internal/process/task_queues:95:5)
[XCUITestDriver@f18a (b223f3d3)]     at XCUITestDriver.proxyCommand (/Users/xxxxxxxx/.appium/node_modules/appium-xcuitest-driver/lib/commands/proxy-helper.js:109:35)
[XCUITestDriver@f18a (b223f3d3)]     at XCUITestDriver.clear (/Users/xxxxxxx/.appium/node_modules/appium-xcuitest-driver/lib/commands/element.js:291:5)
[HTTP] <-- POST /session/b223f3d3-a33c-47ff-bc43-dedf4b5e50c1/element/22000000-0000-0000-DE95-000000000000/clear 404 5273 ms - 1399
[HTTP] 

Screenshot of Appium Inspector:

Screenshot 2024-05-10 at 18 33 12

Failure message from Appium Inspector:
Screenshot 2024-05-10 at 18 22 18

As a work around, I have now cleared the input field via alternative method by calling keyboard BACK_SPACE key multiple times instead:

textField.sendKeys(Keys.BACK_SPACE);

This works but it is just a hack around original issue.

Expected Behavior

Appium should clear the input field element successfully without throwing error and crashing the application.

Minimal Reproducible Example

Example code:-

@iOSXCUITFindBy(className = "XCUIElementTypeTextField")
public WebElement textField;

public void clearInputmethod() {
  tetextField.click();
  textField.clear();
}

You can also reproduce the issue with Appium Inspector itself without needing to write code. This issue happens only with this specific input field in app.

Environment

  • Operating system: macOS 14.4.1
  • Appium server version (output of appium --version): 2.4.1
  • Appium driver(s) and their version(s): xcuitest@5.14.0
  • Node.js version (output of node --version): v20.11.0
  • npm version (output of npm --version): 10.2.4
  • Last component(s) version which did not exhibit the problem:
  • Platform and version under test: Appium Inspector App Version: 2023.12.2, Appium Java Client 9.2.2, JDK 17
  • Real device or emulator/simulator: both real device and simulator (iOS 17.2)

Link to Appium Logs

No response

Further Information

No response

@itkhanz itkhanz added Bug a problem that needs fixing Needs Triage bugs which are not yet confirmed labels May 10, 2024
@mykola-mokhnach
Copy link
Collaborator

WDA emulates pressing the backspace button on a virtual keyboard in order to speed up the cleanup of the text field:
https://github.com/appium/WebDriverAgent/blob/130352cc3151c71acb674861f1443af7035a9e35/WebDriverAgentLib/Categories/XCUIElement%2BFBTyping.m#L169

If that action crashes the app under test then it must be an issue with the app itself.

@mykola-mokhnach mykola-mokhnach added Needs Info typically non-actionable; needs author to respond and removed Bug a problem that needs fixing Needs Triage bugs which are not yet confirmed labels May 10, 2024
@mykola-mokhnach
Copy link
Collaborator

closed as third party issue

@itkhanz
Copy link
Author

itkhanz commented May 14, 2024

WDA emulates pressing the backspace button on a virtual keyboard in order to speed up the cleanup of the text field: https://github.com/appium/WebDriverAgent/blob/130352cc3151c71acb674861f1443af7035a9e35/WebDriverAgentLib/Categories/XCUIElement%2BFBTyping.m#L169

If that action crashes the app under test then it must be an issue with the app itself.

Thank you for the feedback.
Keyboard that appears on screen is a numeric keyboard, so I am not sure which button WDA tries to emulate resulting in crashing of app. For input validation purposes, our app does not allow to pass random inputs via keyboard from user and this might be the reason that app is crashing.

Screenshot 2024-05-14 at 14 20 55

As a workaround, I have managed to clear the input field by using this approach element.sendKeys(Keys.BACK_SPACE); which works well. In my opinion, WDA should also look for the shown backspace button on screen to target it which should successfully clear input.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Needs Info typically non-actionable; needs author to respond
Projects
None yet
Development

No branches or pull requests

2 participants