From e1476e75a009f3519789eb48aa662b5439f55dbd Mon Sep 17 00:00:00 2001 From: sandeepsuryaprasad Date: Tue, 22 Jul 2025 12:19:20 +0530 Subject: [PATCH 1/2] encapsulated geo location coordinates --- .../webdriver/common/bidi/emulation.py | 85 +++++++++++++++---- 1 file changed, 70 insertions(+), 15 deletions(-) diff --git a/py/selenium/webdriver/common/bidi/emulation.py b/py/selenium/webdriver/common/bidi/emulation.py index 9807308a90074..4328f6d34cd22 100644 --- a/py/selenium/webdriver/common/bidi/emulation.py +++ b/py/selenium/webdriver/common/bidi/emulation.py @@ -49,21 +49,6 @@ def __init__( ------ ValueError: If coordinates are out of valid range or if altitude_accuracy is provided without altitude. """ - if not (-90.0 <= latitude <= 90.0): - raise ValueError("Latitude must be between -90.0 and 90.0") - if not (-180.0 <= longitude <= 180.0): - raise ValueError("Longitude must be between -180.0 and 180.0") - if accuracy < 0.0: - raise ValueError("Accuracy must be >= 0.0") - if altitude_accuracy is not None and altitude is None: - raise ValueError("altitude_accuracy cannot be set without altitude") - if altitude_accuracy is not None and altitude_accuracy < 0.0: - raise ValueError("Altitude accuracy must be >= 0.0") - if heading is not None and not (0.0 <= heading < 360.0): - raise ValueError("Heading must be between 0.0 and 360.0") - if speed is not None and speed < 0.0: - raise ValueError("Speed must be >= 0.0") - self.latitude = latitude self.longitude = longitude self.accuracy = accuracy @@ -72,6 +57,76 @@ def __init__( self.heading = heading self.speed = speed + @property + def latitude(self): + return self._latitude + + @latitude.setter + def latitude(self, value): + if not (-90.0 <= value <= 90.0): + raise ValueError("Latitude must be between -90.0 and 90.0") + self._latitude = value + + @property + def longitude(self): + return self._longitude + + @longitude.setter + def longitude(self, value): + if not (-180.0 <= value <= 180.0): + raise ValueError("Longitude must be between -180.0 and 180.0") + self._longitude = value + + @property + def accuracy(self): + return self._accuracy + + @accuracy.setter + def accuracy(self, value): + if value < 0.0: + raise ValueError("Accuracy must be >= 0.0") + self._accuracy = value + + @property + def altitude(self): + return self._altitude + + @altitude.setter + def altitude(self, value): + self._altitude = value + + @property + def altitude_accuracy(self): + return self._altitude_accuracy + + @altitude_accuracy.setter + def altitude_accuracy(self, value): + if value is not None and self.altitude is None: + raise ValueError("altitude_accuracy cannot be set without altitude") + if value is not None and value < 0.0: + raise ValueError("Altitude accuracy must be >= 0.0") + self._altitude_accuracy = value + + @property + def heading(self): + return self._heading + + @heading.setter + def heading(self, value): + if value is not None and not (0.0 <= value < 360.0): + raise ValueError("Heading must be between 0.0 and 360.0") + self._heading = value + + @property + def speed(self): + return self._speed + + @speed.setter + def speed(self, value): + if value is not None and value < 0.0: + raise ValueError("Speed must be >= 0.0") + self._speed = value + def to_dict(self) -> dict[str, Union[float, None]]: result: dict[str, Union[float, None]] = { "latitude": self.latitude, From 2f2b83d2802e1f57eec9b22d91bf44f1c4362416 Mon Sep 17 00:00:00 2001 From: sandeepsuryaprasad Date: Wed, 23 Jul 2025 20:55:44 +0530 Subject: [PATCH 2/2] removed capitalization of attributes from error messages --- py/selenium/webdriver/common/bidi/emulation.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/py/selenium/webdriver/common/bidi/emulation.py b/py/selenium/webdriver/common/bidi/emulation.py index 4328f6d34cd22..3c8b609235f37 100644 --- a/py/selenium/webdriver/common/bidi/emulation.py +++ b/py/selenium/webdriver/common/bidi/emulation.py @@ -64,7 +64,7 @@ def latitude(self): @latitude.setter def latitude(self, value): if not (-90.0 <= value <= 90.0): - raise ValueError("Latitude must be between -90.0 and 90.0") + raise ValueError("latitude must be between -90.0 and 90.0") self._latitude = value @property @@ -74,7 +74,7 @@ def longitude(self): @longitude.setter def longitude(self, value): if not (-180.0 <= value <= 180.0): - raise ValueError("Longitude must be between -180.0 and 180.0") + raise ValueError("longitude must be between -180.0 and 180.0") self._longitude = value @property @@ -84,7 +84,7 @@ def accuracy(self): @accuracy.setter def accuracy(self, value): if value < 0.0: - raise ValueError("Accuracy must be >= 0.0") + raise ValueError("accuracy must be >= 0.0") self._accuracy = value @property @@ -104,7 +104,7 @@ def altitude_accuracy(self, value): if value is not None and self.altitude is None: raise ValueError("altitude_accuracy cannot be set without altitude") if value is not None and value < 0.0: - raise ValueError("Altitude accuracy must be >= 0.0") + raise ValueError("altitude_accuracy must be >= 0.0") self._altitude_accuracy = value @property @@ -114,7 +114,7 @@ def heading(self): @heading.setter def heading(self, value): if value is not None and not (0.0 <= value < 360.0): - raise ValueError("Heading must be between 0.0 and 360.0") + raise ValueError("heading must be between 0.0 and 360.0") self._heading = value @property @@ -124,7 +124,7 @@ def speed(self): @speed.setter def speed(self, value): if value is not None and value < 0.0: - raise ValueError("Speed must be >= 0.0") + raise ValueError("speed must be >= 0.0") self._speed = value def to_dict(self) -> dict[str, Union[float, None]]: