From 70ed717a00dd0ad7f0b64c98713e9638df7d80d2 Mon Sep 17 00:00:00 2001 From: sandeepsuryaprasad Date: Mon, 18 Sep 2023 18:39:31 +0530 Subject: [PATCH 01/11] [py] implementation of setting service_args through getters/setters -ER-12760 --- py/python.iml | 2 +- py/selenium/webdriver/chromium/service.py | 18 +++++++++++--- py/selenium/webdriver/common/service.py | 1 + py/selenium/webdriver/edge/service.py | 19 +++++++++++--- py/selenium/webdriver/firefox/service.py | 27 ++++++++++++++------ py/selenium/webdriver/ie/service.py | 29 ++++++++++++++++------ py/selenium/webdriver/safari/service.py | 21 +++++++++++++--- py/selenium/webdriver/webkitgtk/service.py | 17 +++++++++++-- py/selenium/webdriver/wpewebkit/service.py | 17 +++++++++++-- 9 files changed, 119 insertions(+), 32 deletions(-) diff --git a/py/python.iml b/py/python.iml index 7e39384d0a360..91bc2843e9a3f 100644 --- a/py/python.iml +++ b/py/python.iml @@ -15,7 +15,7 @@ - + diff --git a/py/selenium/webdriver/chromium/service.py b/py/selenium/webdriver/chromium/service.py index ae7262d2fcc32..3026f077ba179 100644 --- a/py/selenium/webdriver/chromium/service.py +++ b/py/selenium/webdriver/chromium/service.py @@ -40,10 +40,12 @@ def __init__( env: typing.Optional[typing.Mapping[str, str]] = None, **kwargs, ) -> None: - self.service_args = service_args or [] + if service_args is None: + service_args = [] + self._service_args = service_args if isinstance(log_output, str): - self.service_args.append(f"--log-path={log_output}") + self._service_args.append(f"--log-path={log_output}") self.log_output = None else: self.log_output = log_output @@ -56,5 +58,15 @@ def __init__( **kwargs, ) + @property + def service_args(self): + return self._service_args + + @service_args.setter + def service_args(self, value): + if not isinstance(value, list): + raise TypeError("service args must be a list") + self._service_args.extend(value) + def command_line_args(self) -> typing.List[str]: - return [f"--port={self.port}"] + self.service_args + return [f"--port={self.port}"] + self._service_args diff --git a/py/selenium/webdriver/common/service.py b/py/selenium/webdriver/common/service.py index 54fcfc7367e87..bfbc5e5d5b325 100644 --- a/py/selenium/webdriver/common/service.py +++ b/py/selenium/webdriver/common/service.py @@ -54,6 +54,7 @@ def __init__( env: typing.Optional[typing.Mapping[typing.Any, typing.Any]] = None, **kwargs, ) -> None: + print("__init__ Main Service") if isinstance(log_output, str): self.log_output = open(log_output, "a+", encoding="utf-8") elif log_output is subprocess.STDOUT: diff --git a/py/selenium/webdriver/edge/service.py b/py/selenium/webdriver/edge/service.py index 881fc622784a3..921ff425ee1a6 100644 --- a/py/selenium/webdriver/edge/service.py +++ b/py/selenium/webdriver/edge/service.py @@ -44,7 +44,9 @@ def __init__( env: typing.Optional[typing.Mapping[str, str]] = None, **kwargs, ) -> None: - self.service_args = service_args or [] + if service_args is None: + service_args = [] + self._service_args = service_args if verbose: warnings.warn( @@ -52,13 +54,22 @@ def __init__( DeprecationWarning, stacklevel=2, ) - self.service_args.append("--verbose") - + self._service_args.append("--verbose") super().__init__( executable_path=executable_path, port=port, - service_args=service_args, + service_args=self.service_args, log_output=log_output, env=env, **kwargs, ) + + @property + def service_args(self): + return self._service_args + + @service_args.setter + def service_args(self, value): + if not isinstance(value, list): + raise TypeError("service args must be a list") + self._service_args.extend(value) diff --git a/py/selenium/webdriver/firefox/service.py b/py/selenium/webdriver/firefox/service.py index 506876aa908a1..54466b3d653e4 100644 --- a/py/selenium/webdriver/firefox/service.py +++ b/py/selenium/webdriver/firefox/service.py @@ -15,7 +15,6 @@ # specific language governing permissions and limitations # under the License. import typing -from typing import List from selenium.types import SubprocessStdAlias from selenium.webdriver.common import service @@ -42,7 +41,14 @@ def __init__( env: typing.Optional[typing.Mapping[str, str]] = None, **kwargs, ) -> None: - self.service_args = service_args or [] + if service_args is None: + service_args = [] + self._service_args = service_args + + # Set a port for CDP + if "--connect-existing" not in self._service_args: + self._service_args.append("--websocket-port") + self._service_args.append(f"{utils.free_port()}") super().__init__( executable=executable_path, @@ -52,10 +58,15 @@ def __init__( **kwargs, ) - # Set a port for CDP - if "--connect-existing" not in self.service_args: - self.service_args.append("--websocket-port") - self.service_args.append(f"{utils.free_port()}") + @property + def service_args(self): + return self._service_args + + @service_args.setter + def service_args(self, value): + if not isinstance(value, list): + raise TypeError("service args must be a list") + self._service_args.extend(value) - def command_line_args(self) -> List[str]: - return ["--port", f"{self.port}"] + self.service_args + def command_line_args(self) -> typing.List[str]: + return ["--port", f"{self.port}"] + self._service_args diff --git a/py/selenium/webdriver/ie/service.py b/py/selenium/webdriver/ie/service.py index 3713517d30ff3..1dc5952c825f0 100644 --- a/py/selenium/webdriver/ie/service.py +++ b/py/selenium/webdriver/ie/service.py @@ -15,7 +15,6 @@ # specific language governing permissions and limitations # under the License. import typing -from typing import List from selenium.types import SubprocessStdAlias from selenium.webdriver.common import service @@ -40,16 +39,20 @@ def __init__( - executable_path : Path to the IEDriver - port : Port the service is running on - host : IP address the service port is bound - - log_level : Level of logging of service, may be "FATAL", "ERROR", "WARN", "INFO", "DEBUG", "TRACE". - Default is "FATAL". + - log_level : Level of logging of service, may be "DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL". + Default is "WARNING". - log_output: (Optional) int representation of STDOUT/DEVNULL, any IO instance or String path to file. Default is "stdout". """ - self.service_args = service_args or [] + if service_args is None: + service_args = [] + self._service_args = service_args + if host: - self.service_args.append(f"--host={host}") + self._service_args.append(f"--host-{host}") + if log_level: - self.service_args.append(f"--log-level={log_level}") + self._service_args.append(f"--log-level-{log_level}") super().__init__( executable_path, @@ -58,5 +61,15 @@ def __init__( **kwargs, ) - def command_line_args(self) -> List[str]: - return [f"--port={self.port}"] + self.service_args + @property + def service_args(self): + return self._service_args + + @service_args.setter + def service_args(self, value): + if not isinstance(value, list): + raise TypeError("Service args must be a list") + self._service_args.extend(value) + + def command_line_args(self) -> typing.List[str]: + return [f"--port={self.port}"] + self._service_args diff --git a/py/selenium/webdriver/safari/service.py b/py/selenium/webdriver/safari/service.py index be6427960f37e..c4afe338e04e2 100644 --- a/py/selenium/webdriver/safari/service.py +++ b/py/selenium/webdriver/safari/service.py @@ -42,11 +42,14 @@ def __init__( reuse_service=False, **kwargs, ) -> None: - self.service_args = service_args or [] + if service_args is None: + service_args = [] + self._service_args = service_args + if quiet is not None: warnings.warn("quiet is no longer needed to supress output", DeprecationWarning, stacklevel=2) + self.reuse_service = reuse_service - self._reuse_service = reuse_service super().__init__( executable=executable_path, port=port, @@ -54,8 +57,15 @@ def __init__( **kwargs, ) - def command_line_args(self) -> typing.List[str]: - return ["-p", f"{self.port}"] + self.service_args + @property + def service_args(self): + return self._service_args + + @service_args.setter + def service_args(self, value): + if not isinstance(value, list): + raise TypeError("service args must be a list") + self._service_args.extend(value) @property def service_url(self) -> str: @@ -71,3 +81,6 @@ def reuse_service(self, reuse: bool) -> None: if not isinstance(reuse, bool): raise TypeError("reuse must be a boolean") self._reuse_service = reuse + + def command_line_args(self) -> typing.List[str]: + return ["-p", f"{self.port}"] + self._service_args diff --git a/py/selenium/webdriver/webkitgtk/service.py b/py/selenium/webdriver/webkitgtk/service.py index 883fc0681b488..5cdeadb0e85b6 100644 --- a/py/selenium/webdriver/webkitgtk/service.py +++ b/py/selenium/webdriver/webkitgtk/service.py @@ -41,7 +41,10 @@ def __init__( env: typing.Optional[typing.Mapping[str, str]] = None, **kwargs, ): - self.service_args = service_args or [] + if service_args is None: + service_args = [] + self._service_args = service_args + log_file = open(log_path, "wb") if log_path else None super().__init__( executable=executable_path, @@ -51,5 +54,15 @@ def __init__( **kwargs, ) # type: ignore + @property + def service_args(self): + return self._service_args + + @service_args.setter + def service_args(self, value): + if not isinstance(value, list): + raise TypeError("service args must be a list") + self._service_args.extend(value) + def command_line_args(self) -> typing.List[str]: - return ["-p", f"{self.port}"] + self.service_args + return ["-p", f"{self.port}"] + self._service_args diff --git a/py/selenium/webdriver/wpewebkit/service.py b/py/selenium/webdriver/wpewebkit/service.py index 4dbb35a490e75..e0b6788adaa9d 100644 --- a/py/selenium/webdriver/wpewebkit/service.py +++ b/py/selenium/webdriver/wpewebkit/service.py @@ -41,7 +41,10 @@ def __init__( env: typing.Optional[typing.Mapping[str, str]] = None, **kwargs, ): - self.service_args = service_args or [] + if service_args is None: + service_args = [] + self._service_args = service_args + log_file = open(log_path, "wb") if log_path else None super().__init__( executable=executable_path, @@ -51,5 +54,15 @@ def __init__( **kwargs, ) # type: ignore + @property + def service_args(self): + return self._service_args + + @service_args.setter + def service_args(self, value): + if not isinstance(value, list): + raise TypeError("service args must be a list") + self._service_args.extend(value) + def command_line_args(self) -> typing.List[str]: - return ["-p", f"{self.port}"] + self.service_args + return ["-p", f"{self.port}"] + self._service_args From 9cce058473a59d70e4e2d2eba269562edff42998 Mon Sep 17 00:00:00 2001 From: sandeepsuryaprasad Date: Mon, 18 Sep 2023 18:44:34 +0530 Subject: [PATCH 02/11] fixed typo --- py/selenium/webdriver/ie/service.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/py/selenium/webdriver/ie/service.py b/py/selenium/webdriver/ie/service.py index 1dc5952c825f0..e314306642603 100644 --- a/py/selenium/webdriver/ie/service.py +++ b/py/selenium/webdriver/ie/service.py @@ -52,7 +52,7 @@ def __init__( self._service_args.append(f"--host-{host}") if log_level: - self._service_args.append(f"--log-level-{log_level}") + self._service_args.append(f"--log-level={log_level}") super().__init__( executable_path, From 935fdec3e00dd142e2cafe2d2ed3517cb7de0075 Mon Sep 17 00:00:00 2001 From: sandeepsuryaprasad Date: Mon, 18 Sep 2023 18:55:50 +0530 Subject: [PATCH 03/11] removed un-necessary print statement --- py/selenium/webdriver/common/service.py | 1 - 1 file changed, 1 deletion(-) diff --git a/py/selenium/webdriver/common/service.py b/py/selenium/webdriver/common/service.py index bfbc5e5d5b325..54fcfc7367e87 100644 --- a/py/selenium/webdriver/common/service.py +++ b/py/selenium/webdriver/common/service.py @@ -54,7 +54,6 @@ def __init__( env: typing.Optional[typing.Mapping[typing.Any, typing.Any]] = None, **kwargs, ) -> None: - print("__init__ Main Service") if isinstance(log_output, str): self.log_output = open(log_output, "a+", encoding="utf-8") elif log_output is subprocess.STDOUT: From d96756e2d548e648b3480e437fcd459fd7e27ac1 Mon Sep 17 00:00:00 2001 From: sandeepsuryaprasad Date: Mon, 18 Sep 2023 20:00:01 +0530 Subject: [PATCH 04/11] reverted ie log levels and minimum supported python version to 3.9 --- py/python.iml | 4 ++-- py/selenium/webdriver/ie/service.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/py/python.iml b/py/python.iml index 91bc2843e9a3f..238e0029909b4 100644 --- a/py/python.iml +++ b/py/python.iml @@ -15,7 +15,7 @@ - + @@ -25,4 +25,4 @@ - \ No newline at end of file + diff --git a/py/selenium/webdriver/ie/service.py b/py/selenium/webdriver/ie/service.py index e314306642603..a91574663e984 100644 --- a/py/selenium/webdriver/ie/service.py +++ b/py/selenium/webdriver/ie/service.py @@ -39,8 +39,8 @@ def __init__( - executable_path : Path to the IEDriver - port : Port the service is running on - host : IP address the service port is bound - - log_level : Level of logging of service, may be "DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL". - Default is "WARNING". + - log_level : Level of logging of service, may be "FATAL", "ERROR", "WARN", "INFO", "DEBUG", "TRACE". + Default is "FATAL". - log_output: (Optional) int representation of STDOUT/DEVNULL, any IO instance or String path to file. Default is "stdout". """ From 89af1759f5a5765322b1def9db486d17cb18b53a Mon Sep 17 00:00:00 2001 From: sandeepsuryaprasad Date: Mon, 18 Sep 2023 20:12:53 +0530 Subject: [PATCH 05/11] commiting .idea/misc.xml --- .idea/misc.xml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index c052579f90a0f..4ef08341dc293 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -3,7 +3,5 @@ - - - + \ No newline at end of file From 3ae905436ee29e1d7cecea8c860549805e822ccd Mon Sep 17 00:00:00 2001 From: sandeepsuryaprasad Date: Mon, 18 Sep 2023 20:25:07 +0530 Subject: [PATCH 06/11] resolved merge conflicts --- py/python.iml | 2 +- py/selenium/webdriver/common/service.py | 1 + py/selenium/webdriver/ie/service.py | 5 ++--- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/py/python.iml b/py/python.iml index 238e0029909b4..5ba853a214146 100644 --- a/py/python.iml +++ b/py/python.iml @@ -15,7 +15,7 @@ - + diff --git a/py/selenium/webdriver/common/service.py b/py/selenium/webdriver/common/service.py index 54fcfc7367e87..bfbc5e5d5b325 100644 --- a/py/selenium/webdriver/common/service.py +++ b/py/selenium/webdriver/common/service.py @@ -54,6 +54,7 @@ def __init__( env: typing.Optional[typing.Mapping[typing.Any, typing.Any]] = None, **kwargs, ) -> None: + print("__init__ Main Service") if isinstance(log_output, str): self.log_output = open(log_output, "a+", encoding="utf-8") elif log_output is subprocess.STDOUT: diff --git a/py/selenium/webdriver/ie/service.py b/py/selenium/webdriver/ie/service.py index a91574663e984..357b51d66f078 100644 --- a/py/selenium/webdriver/ie/service.py +++ b/py/selenium/webdriver/ie/service.py @@ -39,8 +39,8 @@ def __init__( - executable_path : Path to the IEDriver - port : Port the service is running on - host : IP address the service port is bound - - log_level : Level of logging of service, may be "FATAL", "ERROR", "WARN", "INFO", "DEBUG", "TRACE". - Default is "FATAL". + - log_level : Level of logging of service, may be "DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL". + Default is "WARNING". - log_output: (Optional) int representation of STDOUT/DEVNULL, any IO instance or String path to file. Default is "stdout". """ @@ -53,7 +53,6 @@ def __init__( if log_level: self._service_args.append(f"--log-level={log_level}") - super().__init__( executable_path, port=port, From e765368a6336b3a7f7ab2d754256bea250d0a673 Mon Sep 17 00:00:00 2001 From: sandeepsuryaprasad Date: Mon, 18 Sep 2023 20:36:28 +0530 Subject: [PATCH 07/11] reveted minimum py version to 3.9 in python.iml --- py/python.iml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/py/python.iml b/py/python.iml index 5ba853a214146..238e0029909b4 100644 --- a/py/python.iml +++ b/py/python.iml @@ -15,7 +15,7 @@ - + From d257645e019889875d3d14098513fc2de4be0ca5 Mon Sep 17 00:00:00 2001 From: sandeepsuryaprasad Date: Mon, 18 Sep 2023 20:51:00 +0530 Subject: [PATCH 08/11] cleanup --- py/selenium/webdriver/common/service.py | 1 - py/selenium/webdriver/ie/service.py | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/py/selenium/webdriver/common/service.py b/py/selenium/webdriver/common/service.py index bfbc5e5d5b325..54fcfc7367e87 100644 --- a/py/selenium/webdriver/common/service.py +++ b/py/selenium/webdriver/common/service.py @@ -54,7 +54,6 @@ def __init__( env: typing.Optional[typing.Mapping[typing.Any, typing.Any]] = None, **kwargs, ) -> None: - print("__init__ Main Service") if isinstance(log_output, str): self.log_output = open(log_output, "a+", encoding="utf-8") elif log_output is subprocess.STDOUT: diff --git a/py/selenium/webdriver/ie/service.py b/py/selenium/webdriver/ie/service.py index 357b51d66f078..241bae84c67ab 100644 --- a/py/selenium/webdriver/ie/service.py +++ b/py/selenium/webdriver/ie/service.py @@ -39,8 +39,8 @@ def __init__( - executable_path : Path to the IEDriver - port : Port the service is running on - host : IP address the service port is bound - - log_level : Level of logging of service, may be "DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL". - Default is "WARNING". + - log_level : Level of logging of service, may be "FATAL", "ERROR", "WARN", "INFO", "DEBUG", "TRACE". + Default is "FATAL". - log_output: (Optional) int representation of STDOUT/DEVNULL, any IO instance or String path to file. Default is "stdout". """ From 8702e03d084f25c08fe9e7ffd7c0725c22cb2891 Mon Sep 17 00:00:00 2001 From: sandeepsuryaprasad Date: Mon, 18 Sep 2023 20:53:12 +0530 Subject: [PATCH 09/11] fixed typo --- py/selenium/webdriver/ie/service.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/py/selenium/webdriver/ie/service.py b/py/selenium/webdriver/ie/service.py index 241bae84c67ab..0f17f847c5ee3 100644 --- a/py/selenium/webdriver/ie/service.py +++ b/py/selenium/webdriver/ie/service.py @@ -49,7 +49,7 @@ def __init__( self._service_args = service_args if host: - self._service_args.append(f"--host-{host}") + self._service_args.append(f"--host={host}") if log_level: self._service_args.append(f"--log-level={log_level}") From 093e3df28eb8f1756cd5d4b4bcd51998c1f48281 Mon Sep 17 00:00:00 2001 From: sandeepsuryaprasad Date: Thu, 28 Sep 2023 06:48:28 +0530 Subject: [PATCH 10/11] incorporated review comments --- py/selenium/webdriver/chromium/service.py | 10 +++++----- py/selenium/webdriver/edge/service.py | 10 +++++----- py/selenium/webdriver/firefox/service.py | 10 +++++----- py/selenium/webdriver/ie/service.py | 10 +++++----- py/selenium/webdriver/safari/service.py | 10 +++++----- py/selenium/webdriver/webkitgtk/service.py | 10 +++++----- py/selenium/webdriver/wpewebkit/service.py | 10 +++++----- 7 files changed, 35 insertions(+), 35 deletions(-) diff --git a/py/selenium/webdriver/chromium/service.py b/py/selenium/webdriver/chromium/service.py index 3026f077ba179..0f26a9df2f93a 100644 --- a/py/selenium/webdriver/chromium/service.py +++ b/py/selenium/webdriver/chromium/service.py @@ -35,14 +35,14 @@ def __init__( self, executable_path: str = None, port: int = 0, - service_args: typing.Optional[typing.List[str]] = None, + service_args: typing.Sequence[str] = None, log_output: SubprocessStdAlias = None, env: typing.Optional[typing.Mapping[str, str]] = None, **kwargs, ) -> None: if service_args is None: service_args = [] - self._service_args = service_args + self.service_args = service_args if isinstance(log_output, str): self._service_args.append(f"--log-path={log_output}") @@ -64,9 +64,9 @@ def service_args(self): @service_args.setter def service_args(self, value): - if not isinstance(value, list): - raise TypeError("service args must be a list") - self._service_args.extend(value) + if not isinstance(value, typing.Sequence): + raise TypeError("service args must be a sequence") + self._service_args = value def command_line_args(self) -> typing.List[str]: return [f"--port={self.port}"] + self._service_args diff --git a/py/selenium/webdriver/edge/service.py b/py/selenium/webdriver/edge/service.py index 921ff425ee1a6..0df1d16e5185f 100644 --- a/py/selenium/webdriver/edge/service.py +++ b/py/selenium/webdriver/edge/service.py @@ -40,13 +40,13 @@ def __init__( port: int = 0, verbose: bool = False, log_output: SubprocessStdAlias = None, - service_args: typing.Optional[typing.List[str]] = None, + service_args: typing.Sequence[str] = None, env: typing.Optional[typing.Mapping[str, str]] = None, **kwargs, ) -> None: if service_args is None: service_args = [] - self._service_args = service_args + self.service_args = service_args if verbose: warnings.warn( @@ -70,6 +70,6 @@ def service_args(self): @service_args.setter def service_args(self, value): - if not isinstance(value, list): - raise TypeError("service args must be a list") - self._service_args.extend(value) + if not isinstance(value, typing.Sequence): + raise TypeError("service args must be a sequence") + self._service_args = value diff --git a/py/selenium/webdriver/firefox/service.py b/py/selenium/webdriver/firefox/service.py index 54466b3d653e4..5eb446df33b49 100644 --- a/py/selenium/webdriver/firefox/service.py +++ b/py/selenium/webdriver/firefox/service.py @@ -36,14 +36,14 @@ def __init__( self, executable_path: str = None, port: int = 0, - service_args: typing.Optional[typing.List[str]] = None, + service_args: typing.Sequence[str] = None, log_output: SubprocessStdAlias = None, env: typing.Optional[typing.Mapping[str, str]] = None, **kwargs, ) -> None: if service_args is None: service_args = [] - self._service_args = service_args + self.service_args = service_args # Set a port for CDP if "--connect-existing" not in self._service_args: @@ -64,9 +64,9 @@ def service_args(self): @service_args.setter def service_args(self, value): - if not isinstance(value, list): - raise TypeError("service args must be a list") - self._service_args.extend(value) + if not isinstance(value, typing.Sequence): + raise TypeError("service args must be a sequence") + self._service_args = value def command_line_args(self) -> typing.List[str]: return ["--port", f"{self.port}"] + self._service_args diff --git a/py/selenium/webdriver/ie/service.py b/py/selenium/webdriver/ie/service.py index 0f17f847c5ee3..95aa95768202c 100644 --- a/py/selenium/webdriver/ie/service.py +++ b/py/selenium/webdriver/ie/service.py @@ -28,7 +28,7 @@ def __init__( executable_path: str = None, port: int = 0, host: typing.Optional[str] = None, - service_args: typing.Optional[typing.List[str]] = None, + service_args: typing.Sequence[str] = None, log_level: typing.Optional[str] = None, log_output: SubprocessStdAlias = None, **kwargs, @@ -46,7 +46,7 @@ def __init__( """ if service_args is None: service_args = [] - self._service_args = service_args + self.service_args = service_args if host: self._service_args.append(f"--host={host}") @@ -66,9 +66,9 @@ def service_args(self): @service_args.setter def service_args(self, value): - if not isinstance(value, list): - raise TypeError("Service args must be a list") - self._service_args.extend(value) + if not isinstance(value, typing.Sequence): + raise TypeError("Service args must be a sequence") + self._service_args = value def command_line_args(self) -> typing.List[str]: return [f"--port={self.port}"] + self._service_args diff --git a/py/selenium/webdriver/safari/service.py b/py/selenium/webdriver/safari/service.py index c4afe338e04e2..8ae503f2eeb1d 100644 --- a/py/selenium/webdriver/safari/service.py +++ b/py/selenium/webdriver/safari/service.py @@ -37,14 +37,14 @@ def __init__( executable_path: str = None, port: int = 0, quiet: bool = None, - service_args: typing.Optional[typing.List[str]] = None, + service_args: typing.Sequence[str] = None, env: typing.Optional[typing.Mapping[str, str]] = None, reuse_service=False, **kwargs, ) -> None: if service_args is None: service_args = [] - self._service_args = service_args + self.service_args = service_args if quiet is not None: warnings.warn("quiet is no longer needed to supress output", DeprecationWarning, stacklevel=2) @@ -63,9 +63,9 @@ def service_args(self): @service_args.setter def service_args(self, value): - if not isinstance(value, list): - raise TypeError("service args must be a list") - self._service_args.extend(value) + if not isinstance(value, typing.Sequence): + raise TypeError("service args must be a sequence") + self._service_args = value @property def service_url(self) -> str: diff --git a/py/selenium/webdriver/webkitgtk/service.py b/py/selenium/webdriver/webkitgtk/service.py index 5cdeadb0e85b6..201bb94a0ffb3 100644 --- a/py/selenium/webdriver/webkitgtk/service.py +++ b/py/selenium/webdriver/webkitgtk/service.py @@ -37,13 +37,13 @@ def __init__( executable_path: str = DEFAULT_EXECUTABLE_PATH, port: int = 0, log_path: typing.Optional[str] = None, - service_args: typing.Optional[typing.List[str]] = None, + service_args: typing.Sequence[str] = None, env: typing.Optional[typing.Mapping[str, str]] = None, **kwargs, ): if service_args is None: service_args = [] - self._service_args = service_args + self.service_args = service_args log_file = open(log_path, "wb") if log_path else None super().__init__( @@ -60,9 +60,9 @@ def service_args(self): @service_args.setter def service_args(self, value): - if not isinstance(value, list): - raise TypeError("service args must be a list") - self._service_args.extend(value) + if not isinstance(value, typing.Sequence): + raise TypeError("service args must be a sequence") + self._service_args = value def command_line_args(self) -> typing.List[str]: return ["-p", f"{self.port}"] + self._service_args diff --git a/py/selenium/webdriver/wpewebkit/service.py b/py/selenium/webdriver/wpewebkit/service.py index e0b6788adaa9d..de097aeb0b74b 100644 --- a/py/selenium/webdriver/wpewebkit/service.py +++ b/py/selenium/webdriver/wpewebkit/service.py @@ -37,13 +37,13 @@ def __init__( executable_path: str = DEFAULT_EXECUTABLE_PATH, port: int = 0, log_path: typing.Optional[str] = None, - service_args: typing.Optional[typing.List[str]] = None, + service_args: typing.Sequence[str] = None, env: typing.Optional[typing.Mapping[str, str]] = None, **kwargs, ): if service_args is None: service_args = [] - self._service_args = service_args + self.service_args = service_args log_file = open(log_path, "wb") if log_path else None super().__init__( @@ -60,9 +60,9 @@ def service_args(self): @service_args.setter def service_args(self, value): - if not isinstance(value, list): - raise TypeError("service args must be a list") - self._service_args.extend(value) + if not isinstance(value, typing.Sequence): + raise TypeError("service args must be a sequence") + self._service_args = value def command_line_args(self) -> typing.List[str]: return ["-p", f"{self.port}"] + self._service_args From b5d8ba5de633609418706ebfb92d78f38b306715 Mon Sep 17 00:00:00 2001 From: sandeepsuryaprasad Date: Thu, 28 Sep 2023 06:57:49 +0530 Subject: [PATCH 11/11] fixed typo --- py/selenium/webdriver/chromium/service.py | 2 +- py/selenium/webdriver/edge/service.py | 2 +- py/selenium/webdriver/firefox/service.py | 2 +- py/selenium/webdriver/ie/service.py | 2 +- py/selenium/webdriver/safari/service.py | 2 +- py/selenium/webdriver/webkitgtk/service.py | 2 +- py/selenium/webdriver/wpewebkit/service.py | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/py/selenium/webdriver/chromium/service.py b/py/selenium/webdriver/chromium/service.py index 0f26a9df2f93a..3330a84e4337b 100644 --- a/py/selenium/webdriver/chromium/service.py +++ b/py/selenium/webdriver/chromium/service.py @@ -35,7 +35,7 @@ def __init__( self, executable_path: str = None, port: int = 0, - service_args: typing.Sequence[str] = None, + service_args: typing.Optional[typing.Sequence[str]] = None, log_output: SubprocessStdAlias = None, env: typing.Optional[typing.Mapping[str, str]] = None, **kwargs, diff --git a/py/selenium/webdriver/edge/service.py b/py/selenium/webdriver/edge/service.py index 0df1d16e5185f..30fd690113eb7 100644 --- a/py/selenium/webdriver/edge/service.py +++ b/py/selenium/webdriver/edge/service.py @@ -40,7 +40,7 @@ def __init__( port: int = 0, verbose: bool = False, log_output: SubprocessStdAlias = None, - service_args: typing.Sequence[str] = None, + service_args: typing.Optional[typing.Sequence[str]] = None, env: typing.Optional[typing.Mapping[str, str]] = None, **kwargs, ) -> None: diff --git a/py/selenium/webdriver/firefox/service.py b/py/selenium/webdriver/firefox/service.py index 5eb446df33b49..732c986de9200 100644 --- a/py/selenium/webdriver/firefox/service.py +++ b/py/selenium/webdriver/firefox/service.py @@ -36,7 +36,7 @@ def __init__( self, executable_path: str = None, port: int = 0, - service_args: typing.Sequence[str] = None, + service_args: typing.Optional[typing.Sequence[str]] = None, log_output: SubprocessStdAlias = None, env: typing.Optional[typing.Mapping[str, str]] = None, **kwargs, diff --git a/py/selenium/webdriver/ie/service.py b/py/selenium/webdriver/ie/service.py index 95aa95768202c..da06d9658e905 100644 --- a/py/selenium/webdriver/ie/service.py +++ b/py/selenium/webdriver/ie/service.py @@ -28,7 +28,7 @@ def __init__( executable_path: str = None, port: int = 0, host: typing.Optional[str] = None, - service_args: typing.Sequence[str] = None, + service_args: typing.Optional[typing.Sequence[str]] = None, log_level: typing.Optional[str] = None, log_output: SubprocessStdAlias = None, **kwargs, diff --git a/py/selenium/webdriver/safari/service.py b/py/selenium/webdriver/safari/service.py index 8ae503f2eeb1d..65a8625915f0b 100644 --- a/py/selenium/webdriver/safari/service.py +++ b/py/selenium/webdriver/safari/service.py @@ -37,7 +37,7 @@ def __init__( executable_path: str = None, port: int = 0, quiet: bool = None, - service_args: typing.Sequence[str] = None, + service_args: typing.Optional[typing.Sequence[str]] = None, env: typing.Optional[typing.Mapping[str, str]] = None, reuse_service=False, **kwargs, diff --git a/py/selenium/webdriver/webkitgtk/service.py b/py/selenium/webdriver/webkitgtk/service.py index 201bb94a0ffb3..c96d363dbd51d 100644 --- a/py/selenium/webdriver/webkitgtk/service.py +++ b/py/selenium/webdriver/webkitgtk/service.py @@ -37,7 +37,7 @@ def __init__( executable_path: str = DEFAULT_EXECUTABLE_PATH, port: int = 0, log_path: typing.Optional[str] = None, - service_args: typing.Sequence[str] = None, + service_args: typing.Optional[typing.Sequence[str]] = None, env: typing.Optional[typing.Mapping[str, str]] = None, **kwargs, ): diff --git a/py/selenium/webdriver/wpewebkit/service.py b/py/selenium/webdriver/wpewebkit/service.py index de097aeb0b74b..484dfcfd4a8a0 100644 --- a/py/selenium/webdriver/wpewebkit/service.py +++ b/py/selenium/webdriver/wpewebkit/service.py @@ -37,7 +37,7 @@ def __init__( executable_path: str = DEFAULT_EXECUTABLE_PATH, port: int = 0, log_path: typing.Optional[str] = None, - service_args: typing.Sequence[str] = None, + service_args: typing.Optional[typing.Sequence[str]] = None, env: typing.Optional[typing.Mapping[str, str]] = None, **kwargs, ):