diff --git a/src/Appium.Net/Appium/AppiumDriver.cs b/src/Appium.Net/Appium/AppiumDriver.cs index 80f82d1e..7b3ef917 100644 --- a/src/Appium.Net/Appium/AppiumDriver.cs +++ b/src/Appium.Net/Appium/AppiumDriver.cs @@ -302,11 +302,17 @@ public Location Location { var commandResponse = ((IExecuteMethod)this).Execute(AppiumDriverCommand.GetLocation); var locationValues = commandResponse.Value as Dictionary; + + if (locationValues == null) + { + return new Location(); + } + return new Location { - Altitude = Convert.ToDouble(locationValues["altitude"]), - Latitude = Convert.ToDouble(locationValues["latitude"]), - Longitude = Convert.ToDouble(locationValues["longitude"]) + Altitude = locationValues.TryGetValue("altitude", out var alt) ? Convert.ToDouble(alt) : 0.0, + Latitude = locationValues.TryGetValue("latitude", out var lat) ? Convert.ToDouble(lat) : 0.0, + Longitude = locationValues.TryGetValue("longitude", out var lon) ? Convert.ToDouble(lon) : 0.0 }; } set diff --git a/test/integration/Android/ActionsChainsTest.cs b/test/integration/Android/ActionsChainsTest.cs index e2efc852..56a7a696 100644 --- a/test/integration/Android/ActionsChainsTest.cs +++ b/test/integration/Android/ActionsChainsTest.cs @@ -134,8 +134,8 @@ public void TouchByCoordinatesTestCase() Point point = new() { - X = (elementToTouch.Rect.X+elementToTouch.Rect.Width)/2, - Y = elementToTouch.Rect.Y + X = (elementToTouch.Location.X+elementToTouch.Size.Width)/2, + Y = elementToTouch.Location.Y }; Interaction move = touch.CreatePointerMove(CoordinateOrigin.Viewport, point.X, point.Y, TimeSpan.Zero);