Skip to content

Commit 38b1dd1

Browse files
authored
[py] Add args to is_url_connectable (#16212)
1 parent 5e73df4 commit 38b1dd1

File tree

1 file changed

+21
-14
lines changed

1 file changed

+21
-14
lines changed

py/selenium/webdriver/common/utils.py

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@
1414
# KIND, either express or implied. See the License for the
1515
# specific language governing permissions and limitations
1616
# under the License.
17-
"""The Utils methods."""
17+
18+
"""Utility functions."""
1819

1920
import socket
21+
import urllib.request
2022
from collections.abc import Iterable
2123
from typing import Optional, Union
2224

@@ -67,8 +69,8 @@ def find_connectable_ip(host: Union[str, bytes, bytearray, None], port: Optional
6769
port are considered.
6870
6971
:Args:
70-
- host - A hostname.
71-
- port - Optional port number.
72+
- host - hostname
73+
- port - port number
7274
7375
:Returns:
7476
A single IP address, as a string. If any IPv4 address is found, one is
@@ -100,8 +102,8 @@ def join_host_port(host: str, port: int) -> str:
100102
example, _join_host_port('::1', 80) == '[::1]:80'.
101103
102104
:Args:
103-
- host - A hostname.
104-
- port - An integer port.
105+
- host - hostname or IP
106+
- port - port number
105107
"""
106108
if ":" in host and not host.startswith("["):
107109
return f"[{host}]:{port}"
@@ -112,7 +114,8 @@ def is_connectable(port: int, host: Optional[str] = "localhost") -> bool:
112114
"""Tries to connect to the server at port to see if it is running.
113115
114116
:Args:
115-
- port - The port to connect.
117+
- port - port number
118+
- host - hostname or IP
116119
"""
117120
socket_ = None
118121
try:
@@ -130,18 +133,22 @@ def is_connectable(port: int, host: Optional[str] = "localhost") -> bool:
130133
return result
131134

132135

133-
def is_url_connectable(port: Union[int, str]) -> bool:
134-
"""Tries to connect to the HTTP server at /status path and specified port
135-
to see if it responds successfully.
136+
def is_url_connectable(
137+
port: Union[int, str],
138+
host: Optional[str] = "127.0.0.1",
139+
scheme: Optional[str] = "http",
140+
) -> bool:
141+
"""Sends a request to the HTTP server at the /status endpoint to see if it
142+
responds successfully.
136143
137144
:Args:
138-
- port - The port to connect.
145+
- port - port number
146+
- host - hostname or IP
147+
- scheme - URL scheme
139148
"""
140-
from urllib import request as url_request
141-
142149
try:
143-
res = url_request.urlopen(f"http://127.0.0.1:{port}/status")
144-
return res.getcode() == 200
150+
with urllib.request.urlopen(f"{scheme}://{host}:{port}/status") as res:
151+
return res.getcode() == 200
145152
except Exception:
146153
return False
147154

0 commit comments

Comments
 (0)