1
0
mirror of https://github.com/django/django.git synced 2024-12-22 17:16:24 +00:00

Fixed SeleniumTestCase.set_emulated_media() when using selenium_hub.

The .execute_cdp_cmd() method doesn't exist on selenium.webdriver.Remote.
This commit is contained in:
Nick Pope 2024-05-13 16:52:01 +02:00 committed by Sarah Boyce
parent 53b981eff2
commit ceaf1e2848

View File

@ -193,15 +193,24 @@ class SeleniumTestCase(LiveServerTestCase, metaclass=SeleniumTestCaseBase):
finally:
self.selenium.execute_script("localStorage.removeItem('theme');")
def set_emulated_media(self, features, media=""):
def set_emulated_media(self, *, media=None, features=None):
if self.browser not in {"chrome", "edge"}:
self.skipTest(
"Emulation.setEmulatedMedia is only supported on Chromium and "
"Chrome-based browsers. See https://chromedevtools.github.io/devtools-"
"protocol/1-3/Emulation/#method-setEmulatedMedia for more details."
)
self.selenium.execute_cdp_cmd(
"Emulation.setEmulatedMedia", {"media": media, "features": features}
params = {}
if media is not None:
params["media"] = media
if features is not None:
params["features"] = features
# Not using .execute_cdp_cmd() as it isn't supported by the remote web driver
# when using --selenium-hub.
self.selenium.execute(
driver_command="executeCdpCommand",
params={"cmd": "Emulation.setEmulatedMedia", "params": params},
)
@contextmanager