Skip to content

Commit c29694f

Browse files
sandeepsuryaprasadtitusfortner
authored andcommitted
[py] implementation of setting service_args through getters/setters -ER-12760
1 parent 553791c commit c29694f

File tree

9 files changed

+119
-32
lines changed

9 files changed

+119
-32
lines changed

py/python.iml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
1616
<excludeFolder url="file://$MODULE_DIR$/venv" />
1717
</content>
18-
<orderEntry type="jdk" jdkName="Python 3.9 (py)" jdkType="Python SDK" />
18+
<orderEntry type="jdk" jdkName="Python 3.11" jdkType="Python SDK" />
1919
<orderEntry type="sourceFolder" forTests="false" />
2020
</component>
2121
<component name="sonarModuleSettings">

py/selenium/webdriver/chromium/service.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,12 @@ def __init__(
4040
env: typing.Optional[typing.Mapping[str, str]] = None,
4141
**kwargs,
4242
) -> None:
43-
self.service_args = service_args or []
43+
if service_args is None:
44+
service_args = []
45+
self._service_args = service_args
4446

4547
if isinstance(log_output, str):
46-
self.service_args.append(f"--log-path={log_output}")
48+
self._service_args.append(f"--log-path={log_output}")
4749
self.log_output = None
4850
else:
4951
self.log_output = log_output
@@ -56,5 +58,15 @@ def __init__(
5658
**kwargs,
5759
)
5860

61+
@property
62+
def service_args(self):
63+
return self._service_args
64+
65+
@service_args.setter
66+
def service_args(self, value):
67+
if not isinstance(value, list):
68+
raise TypeError("service args must be a list")
69+
self._service_args.extend(value)
70+
5971
def command_line_args(self) -> typing.List[str]:
60-
return [f"--port={self.port}"] + self.service_args
72+
return [f"--port={self.port}"] + self._service_args

py/selenium/webdriver/common/service.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ def __init__(
5454
env: typing.Optional[typing.Mapping[typing.Any, typing.Any]] = None,
5555
**kwargs,
5656
) -> None:
57+
print("__init__ Main Service")
5758
if isinstance(log_output, str):
5859
self.log_output = open(log_output, "a+", encoding="utf-8")
5960
elif log_output is subprocess.STDOUT:

py/selenium/webdriver/edge/service.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,21 +44,32 @@ def __init__(
4444
env: typing.Optional[typing.Mapping[str, str]] = None,
4545
**kwargs,
4646
) -> None:
47-
self.service_args = service_args or []
47+
if service_args is None:
48+
service_args = []
49+
self._service_args = service_args
4850

4951
if verbose:
5052
warnings.warn(
5153
"verbose=True is deprecated. Use `service_args=['--verbose', ...]` instead.",
5254
DeprecationWarning,
5355
stacklevel=2,
5456
)
55-
self.service_args.append("--verbose")
56-
57+
self._service_args.append("--verbose")
5758
super().__init__(
5859
executable_path=executable_path,
5960
port=port,
60-
service_args=service_args,
61+
service_args=self.service_args,
6162
log_output=log_output,
6263
env=env,
6364
**kwargs,
6465
)
66+
67+
@property
68+
def service_args(self):
69+
return self._service_args
70+
71+
@service_args.setter
72+
def service_args(self, value):
73+
if not isinstance(value, list):
74+
raise TypeError("service args must be a list")
75+
self._service_args.extend(value)

py/selenium/webdriver/firefox/service.py

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
# specific language governing permissions and limitations
1616
# under the License.
1717
import typing
18-
from typing import List
1918

2019
from selenium.types import SubprocessStdAlias
2120
from selenium.webdriver.common import service
@@ -42,7 +41,14 @@ def __init__(
4241
env: typing.Optional[typing.Mapping[str, str]] = None,
4342
**kwargs,
4443
) -> None:
45-
self.service_args = service_args or []
44+
if service_args is None:
45+
service_args = []
46+
self._service_args = service_args
47+
48+
# Set a port for CDP
49+
if "--connect-existing" not in self._service_args:
50+
self._service_args.append("--websocket-port")
51+
self._service_args.append(f"{utils.free_port()}")
4652

4753
super().__init__(
4854
executable=executable_path,
@@ -52,10 +58,15 @@ def __init__(
5258
**kwargs,
5359
)
5460

55-
# Set a port for CDP
56-
if "--connect-existing" not in self.service_args:
57-
self.service_args.append("--websocket-port")
58-
self.service_args.append(f"{utils.free_port()}")
61+
@property
62+
def service_args(self):
63+
return self._service_args
64+
65+
@service_args.setter
66+
def service_args(self, value):
67+
if not isinstance(value, list):
68+
raise TypeError("service args must be a list")
69+
self._service_args.extend(value)
5970

60-
def command_line_args(self) -> List[str]:
61-
return ["--port", f"{self.port}"] + self.service_args
71+
def command_line_args(self) -> typing.List[str]:
72+
return ["--port", f"{self.port}"] + self._service_args

py/selenium/webdriver/ie/service.py

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
# specific language governing permissions and limitations
1616
# under the License.
1717
import typing
18-
from typing import List
1918

2019
from selenium.types import SubprocessStdAlias
2120
from selenium.webdriver.common import service
@@ -40,16 +39,20 @@ def __init__(
4039
- executable_path : Path to the IEDriver
4140
- port : Port the service is running on
4241
- host : IP address the service port is bound
43-
- log_level : Level of logging of service, may be "FATAL", "ERROR", "WARN", "INFO", "DEBUG", "TRACE".
44-
Default is "FATAL".
42+
- log_level : Level of logging of service, may be "DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL".
43+
Default is "WARNING".
4544
- log_output: (Optional) int representation of STDOUT/DEVNULL, any IO instance or String path to file.
4645
Default is "stdout".
4746
"""
48-
self.service_args = service_args or []
47+
if service_args is None:
48+
service_args = []
49+
self._service_args = service_args
50+
4951
if host:
50-
self.service_args.append(f"--host={host}")
52+
self._service_args.append(f"--host-{host}")
53+
5154
if log_level:
52-
self.service_args.append(f"--log-level={log_level}")
55+
self._service_args.append(f"--log-level-{log_level}")
5356

5457
super().__init__(
5558
executable_path,
@@ -58,5 +61,15 @@ def __init__(
5861
**kwargs,
5962
)
6063

61-
def command_line_args(self) -> List[str]:
62-
return [f"--port={self.port}"] + self.service_args
64+
@property
65+
def service_args(self):
66+
return self._service_args
67+
68+
@service_args.setter
69+
def service_args(self, value):
70+
if not isinstance(value, list):
71+
raise TypeError("Service args must be a list")
72+
self._service_args.extend(value)
73+
74+
def command_line_args(self) -> typing.List[str]:
75+
return [f"--port={self.port}"] + self._service_args

py/selenium/webdriver/safari/service.py

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,20 +42,30 @@ def __init__(
4242
reuse_service=False,
4343
**kwargs,
4444
) -> None:
45-
self.service_args = service_args or []
45+
if service_args is None:
46+
service_args = []
47+
self._service_args = service_args
48+
4649
if quiet is not None:
4750
warnings.warn("quiet is no longer needed to supress output", DeprecationWarning, stacklevel=2)
51+
self.reuse_service = reuse_service
4852

49-
self._reuse_service = reuse_service
5053
super().__init__(
5154
executable=executable_path,
5255
port=port,
5356
env=env,
5457
**kwargs,
5558
)
5659

57-
def command_line_args(self) -> typing.List[str]:
58-
return ["-p", f"{self.port}"] + self.service_args
60+
@property
61+
def service_args(self):
62+
return self._service_args
63+
64+
@service_args.setter
65+
def service_args(self, value):
66+
if not isinstance(value, list):
67+
raise TypeError("service args must be a list")
68+
self._service_args.extend(value)
5969

6070
@property
6171
def service_url(self) -> str:
@@ -71,3 +81,6 @@ def reuse_service(self, reuse: bool) -> None:
7181
if not isinstance(reuse, bool):
7282
raise TypeError("reuse must be a boolean")
7383
self._reuse_service = reuse
84+
85+
def command_line_args(self) -> typing.List[str]:
86+
return ["-p", f"{self.port}"] + self._service_args

py/selenium/webdriver/webkitgtk/service.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,10 @@ def __init__(
4141
env: typing.Optional[typing.Mapping[str, str]] = None,
4242
**kwargs,
4343
):
44-
self.service_args = service_args or []
44+
if service_args is None:
45+
service_args = []
46+
self._service_args = service_args
47+
4548
log_file = open(log_path, "wb") if log_path else None
4649
super().__init__(
4750
executable=executable_path,
@@ -51,5 +54,15 @@ def __init__(
5154
**kwargs,
5255
) # type: ignore
5356

57+
@property
58+
def service_args(self):
59+
return self._service_args
60+
61+
@service_args.setter
62+
def service_args(self, value):
63+
if not isinstance(value, list):
64+
raise TypeError("service args must be a list")
65+
self._service_args.extend(value)
66+
5467
def command_line_args(self) -> typing.List[str]:
55-
return ["-p", f"{self.port}"] + self.service_args
68+
return ["-p", f"{self.port}"] + self._service_args

py/selenium/webdriver/wpewebkit/service.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,10 @@ def __init__(
4141
env: typing.Optional[typing.Mapping[str, str]] = None,
4242
**kwargs,
4343
):
44-
self.service_args = service_args or []
44+
if service_args is None:
45+
service_args = []
46+
self._service_args = service_args
47+
4548
log_file = open(log_path, "wb") if log_path else None
4649
super().__init__(
4750
executable=executable_path,
@@ -51,5 +54,15 @@ def __init__(
5154
**kwargs,
5255
) # type: ignore
5356

57+
@property
58+
def service_args(self):
59+
return self._service_args
60+
61+
@service_args.setter
62+
def service_args(self, value):
63+
if not isinstance(value, list):
64+
raise TypeError("service args must be a list")
65+
self._service_args.extend(value)
66+
5467
def command_line_args(self) -> typing.List[str]:
55-
return ["-p", f"{self.port}"] + self.service_args
68+
return ["-p", f"{self.port}"] + self._service_args

0 commit comments

Comments
 (0)