diff --git a/django/test/selenium.py b/django/test/selenium.py index db6c78a96b..4ef5015556 100644 --- a/django/test/selenium.py +++ b/django/test/selenium.py @@ -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