Skip to content

Commit 6f3871d

Browse files
committed
[py] Fix tests
1 parent ee08742 commit 6f3871d

File tree

6 files changed

+50
-59
lines changed

6 files changed

+50
-59
lines changed

py/conftest.py

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -213,11 +213,10 @@ def get_options(driver_class, config):
213213
browser_args = config.option.args
214214
headless = config.option.headless
215215
bidi = config.option.bidi
216-
options = None
216+
217+
options = options = getattr(webdriver, f"{driver_class}Options")()
217218

218219
if browser_path or browser_args:
219-
if not options:
220-
options = getattr(webdriver, f"{driver_class}Options")()
221220
if driver_class == "WebKitGTK":
222221
options.overlay_scrollbars_enabled = False
223222
if browser_path is not None:
@@ -227,16 +226,12 @@ def get_options(driver_class, config):
227226
options.add_argument(arg)
228227

229228
if headless:
230-
if not options:
231-
options = getattr(webdriver, f"{driver_class}Options")()
232229
if driver_class == "Chrome" or driver_class == "Edge":
233230
options.add_argument("--headless=new")
234231
if driver_class == "Firefox":
235232
options.add_argument("-headless")
236233

237234
if bidi:
238-
if not options:
239-
options = getattr(webdriver, f"{driver_class}Options")()
240235
options.web_socket_url = True
241236
options.unhandled_prompt_behavior = "ignore"
242237

@@ -336,32 +331,30 @@ def driver_executable(request):
336331
return request.config.option.executable
337332

338333

339-
@pytest.fixture(scope="function")
340-
def clean_service(request):
341-
try:
342-
driver_class = get_driver_class(request.config.option.drivers[0])
343-
except (AttributeError, TypeError):
344-
raise Exception("This test requires a --driver to be specified")
345-
346-
yield get_service(driver_class, request.config.option.executable)
347-
348-
349334
@pytest.fixture(scope="function")
350335
def clean_driver(request):
351336
try:
352337
driver_class = get_driver_class(request.config.option.drivers[0])
353338
except (AttributeError, TypeError):
354339
raise Exception("This test requires a --driver to be specified")
355-
356-
options = get_options(driver_class, request.config)
357340
driver_reference = getattr(webdriver, driver_class)
358-
359341
yield driver_reference
360-
361342
if request.node.get_closest_marker("no_driver_after_test"):
362343
driver_reference = None
363344

364345

346+
@pytest.fixture(scope="function")
347+
def clean_service(request):
348+
driver_class = get_driver_class(request.config.option.drivers[0])
349+
yield get_service(driver_class, request.config.option.executable)
350+
351+
352+
@pytest.fixture(scope="function")
353+
def clean_options(request):
354+
driver_class = get_driver_class(request.config.option.drivers[0])
355+
yield get_options(driver_class, request.config)
356+
357+
365358
@pytest.fixture
366359
def firefox_options(request):
367360
try:

py/test/selenium/webdriver/chrome/chrome_launcher_tests.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,16 @@
1919

2020

2121
@pytest.mark.no_driver_after_test
22-
def test_launch_and_close_browser(clean_driver, clean_service):
22+
def test_launch_and_close_browser(clean_driver, clean_service, clean_options):
2323
driver = clean_driver(service=clean_service)
2424
driver.quit()
2525

2626

2727
@pytest.mark.no_driver_after_test
28-
def test_we_can_launch_multiple_chrome_instances(clean_driver, clean_service):
29-
driver1 = clean_driver(service=clean_service)
30-
driver2 = clean_driver(service=clean_service)
31-
driver3 = clean_driver(service=clean_service)
28+
def test_we_can_launch_multiple_chrome_instances(clean_driver, clean_service, clean_options):
29+
driver1 = clean_driver(options=clean_options, service=clean_service)
30+
driver2 = clean_driver(options=clean_options, service=clean_service)
31+
driver3 = clean_driver(options=clean_options, service=clean_service)
3232
driver1.quit()
3333
driver2.quit()
3434
driver3.quit()

py/test/selenium/webdriver/chrome/chrome_service_tests.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828

2929

3030
@pytest.mark.no_driver_after_test
31-
def test_uses_chromedriver_logging(clean_driver, driver_executable) -> None:
31+
def test_uses_chromedriver_logging(clean_driver, clean_options, driver_executable) -> None:
3232
log_file = "chromedriver.log"
3333
service_args = ["--append-log"]
3434

@@ -47,10 +47,10 @@ def test_uses_chromedriver_logging(clean_driver, driver_executable) -> None:
4747
driver1 = None
4848
driver2 = None
4949
try:
50-
driver1 = clean_driver(service=service1)
50+
driver1 = clean_driver(options=clean_options, service=service1)
5151
with open(log_file) as fp:
5252
lines = len(fp.readlines())
53-
driver2 = clean_driver(service=service2)
53+
driver2 = clean_driver(options=clean_options, service=service2)
5454
with open(log_file) as fp:
5555
assert len(fp.readlines()) >= 2 * lines
5656
finally:
@@ -62,12 +62,12 @@ def test_uses_chromedriver_logging(clean_driver, driver_executable) -> None:
6262

6363

6464
@pytest.mark.no_driver_after_test
65-
def test_log_output_as_filename(clean_driver, driver_executable) -> None:
65+
def test_log_output_as_filename(clean_driver, clean_options, driver_executable) -> None:
6666
log_file = "chromedriver.log"
6767
service = Service(log_output=log_file, executable_path=driver_executable)
6868
try:
6969
assert "--log-path=chromedriver.log" in service.service_args
70-
driver = clean_driver(service=service)
70+
driver = clean_driver(options=clean_options, service=service)
7171
with open(log_file) as fp:
7272
assert "Starting ChromeDriver" in fp.readline()
7373
finally:
@@ -76,12 +76,12 @@ def test_log_output_as_filename(clean_driver, driver_executable) -> None:
7676

7777

7878
@pytest.mark.no_driver_after_test
79-
def test_log_output_as_file(clean_driver, driver_executable) -> None:
79+
def test_log_output_as_file(clean_driver, clean_options, driver_executable) -> None:
8080
log_name = "chromedriver.log"
8181
log_file = open(log_name, "w", encoding="utf-8")
8282
service = Service(log_output=log_file, executable_path=driver_executable)
8383
try:
84-
driver = clean_driver(service=service)
84+
driver = clean_driver(options=clean_options, service=service)
8585
time.sleep(1)
8686
with open(log_name) as fp:
8787
assert "Starting ChromeDriver" in fp.readline()
@@ -92,9 +92,9 @@ def test_log_output_as_file(clean_driver, driver_executable) -> None:
9292

9393

9494
@pytest.mark.no_driver_after_test
95-
def test_log_output_as_stdout(clean_driver, capfd, driver_executable) -> None:
95+
def test_log_output_as_stdout(clean_driver, clean_options, capfd, driver_executable) -> None:
9696
service = Service(log_output=subprocess.STDOUT, executable_path=driver_executable)
97-
driver = clean_driver(service=service)
97+
driver = clean_driver(options=clean_options, service=service)
9898

9999
out, err = capfd.readouterr()
100100
assert "Starting ChromeDriver" in out
@@ -109,10 +109,10 @@ def test_log_output_null_default(driver, capfd) -> None:
109109

110110

111111
@pytest.mark.no_driver_after_test
112-
def test_driver_is_stopped_if_browser_cant_start(clean_driver) -> None:
112+
def test_driver_is_stopped_if_browser_cant_start(clean_driver, driver_executable) -> None:
113113
options = Options()
114114
options.add_argument("--user-data-dir=/no/such/location")
115-
service = Service()
115+
service = Service(executable_path=driver_executable)
116116
with pytest.raises(SessionNotCreatedException):
117117
clean_driver(options=options, service=service)
118118
assert not service.is_connectable()

py/test/selenium/webdriver/chrome/proxy_tests.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,11 @@
2424

2525

2626
@pytest.mark.no_driver_after_test
27-
def test_bad_proxy_doesnt_interfere(clean_driver, clean_service):
27+
def test_bad_proxy_doesnt_interfere(clean_driver, clean_options, clean_service):
2828
# Proxy environment variables should be ignored if
2929
# ignore_local_proxy_environment_variables() is called.
30-
31-
options = webdriver.ChromeOptions()
32-
options.ignore_local_proxy_environment_variables()
33-
chrome_kwargs = {"options": options, "service": clean_service}
30+
clean_options.ignore_local_proxy_environment_variables()
31+
chrome_kwargs = {"options": clean_options, "service": clean_service}
3432
with patch.dict("os.environ", {"http_proxy": "bad", "https_proxy": "bad"}):
3533
driver = clean_driver(**chrome_kwargs)
3634
assert hasattr(driver, "command_executor")

py/test/selenium/webdriver/edge/edge_launcher_tests.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,16 @@
1919

2020

2121
@pytest.mark.no_driver_after_test
22-
def test_launch_and_close_browser(clean_driver, clean_service):
23-
driver = clean_driver(service=clean_service)
22+
def test_launch_and_close_browser(clean_driver, clean_options, clean_service):
23+
driver = clean_driver(options=clean_options, service=clean_service)
2424
driver.quit()
2525

2626

2727
@pytest.mark.no_driver_after_test
28-
def test_we_can_launch_multiple_edge_instances(clean_driver, clean_service):
29-
driver1 = clean_driver(service=clean_service)
30-
driver2 = clean_driver(service=clean_service)
31-
driver3 = clean_driver(service=clean_service)
28+
def test_we_can_launch_multiple_edge_instances(clean_driver, clean_options, clean_service):
29+
driver1 = clean_driver(options=clean_options, service=clean_service)
30+
driver2 = clean_driver(options=clean_options, service=clean_service)
31+
driver3 = clean_driver(options=clean_options, service=clean_service)
3232
driver1.quit()
3333
driver2.quit()
3434
driver3.quit()

py/test/selenium/webdriver/edge/edge_service_tests.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828

2929

3030
@pytest.mark.no_driver_after_test
31-
def test_uses_edgedriver_logging(clean_driver, driver_executable) -> None:
31+
def test_uses_edgedriver_logging(clean_driver, clean_options, driver_executable) -> None:
3232
log_file = "msedgedriver.log"
3333
service_args = ["--append-log"]
3434

@@ -47,10 +47,10 @@ def test_uses_edgedriver_logging(clean_driver, driver_executable) -> None:
4747
driver1 = None
4848
driver2 = None
4949
try:
50-
driver1 = clean_driver(service=service1)
50+
driver1 = clean_driver(options=clean_options, service=service1)
5151
with open(log_file) as fp:
5252
lines = len(fp.readlines())
53-
driver2 = clean_driver(service=service2)
53+
driver2 = clean_driver(options=clean_options, service=service2)
5454
with open(log_file) as fp:
5555
assert len(fp.readlines()) >= 2 * lines
5656
finally:
@@ -62,12 +62,12 @@ def test_uses_edgedriver_logging(clean_driver, driver_executable) -> None:
6262

6363

6464
@pytest.mark.no_driver_after_test
65-
def test_log_output_as_filename(clean_driver, driver_executable) -> None:
65+
def test_log_output_as_filename(clean_driver, clean_options, driver_executable) -> None:
6666
log_file = "msedgedriver.log"
6767
service = Service(log_output=log_file, executable_path=driver_executable)
6868
try:
6969
assert "--log-path=msedgedriver.log" in service.service_args
70-
driver = clean_driver(service=service)
70+
driver = clean_driver(options=clean_options, service=service)
7171
with open(log_file) as fp:
7272
assert "Starting Microsoft Edge WebDriver" in fp.readline()
7373
finally:
@@ -76,12 +76,12 @@ def test_log_output_as_filename(clean_driver, driver_executable) -> None:
7676

7777

7878
@pytest.mark.no_driver_after_test
79-
def test_log_output_as_file(clean_driver, driver_executable) -> None:
79+
def test_log_output_as_file(clean_driver, clean_options, driver_executable) -> None:
8080
log_name = "msedgedriver.log"
8181
log_file = open(log_name, "w", encoding="utf-8")
8282
service = Service(log_output=log_file, executable_path=driver_executable)
8383
try:
84-
driver = clean_driver(service=service)
84+
driver = clean_driver(options=clean_options, service=service)
8585
time.sleep(1)
8686
with open(log_name) as fp:
8787
assert "Starting Microsoft Edge WebDriver" in fp.readline()
@@ -92,9 +92,9 @@ def test_log_output_as_file(clean_driver, driver_executable) -> None:
9292

9393

9494
@pytest.mark.no_driver_after_test
95-
def test_log_output_as_stdout(clean_driver, capfd, driver_executable) -> None:
95+
def test_log_output_as_stdout(clean_driver, clean_options, capfd, driver_executable) -> None:
9696
service = Service(log_output=subprocess.STDOUT, executable_path=driver_executable)
97-
driver = clean_driver(service=service)
97+
driver = clean_driver(options=clean_options, service=service)
9898

9999
out, err = capfd.readouterr()
100100
assert "Starting Microsoft Edge WebDriver" in out
@@ -109,10 +109,10 @@ def test_log_output_null_default(driver, capfd) -> None:
109109

110110

111111
@pytest.mark.no_driver_after_test
112-
def test_driver_is_stopped_if_browser_cant_start(clean_driver) -> None:
112+
def test_driver_is_stopped_if_browser_cant_start(clean_driver, clean_service, driver_executable) -> None:
113113
options = Options()
114114
options.add_argument("--user-data-dir=/no/such/location")
115-
service = Service()
115+
service = Service(executable_path=driver_executable)
116116
with pytest.raises(SessionNotCreatedException):
117117
clean_driver(options=options, service=service)
118118
assert not service.is_connectable()

0 commit comments

Comments
 (0)