Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions src/selenium_driverless/webdriver.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ def __init__(
self._is_remote = False
self._has_incognito_contexts: bool = False
self._started = False
self._is_developer_mode = False

def __repr__(self):
return f'<{type(self).__module__}.{type(self).__name__} (session="{self.current_target.id}")>'
Expand Down Expand Up @@ -371,6 +372,7 @@ async def new_context(self, proxy_bypass_list: typing.List[str] = None, proxy_se
:param proxy_server: a proxy-server to use for the context
:param proxy_bypass_list: a list of proxies to ignore
"""
await self.enable_developer_mode()
await self.ensure_extensions_incognito_allowed()
if proxy_bypass_list is None:
proxy_bypass_list = ["localhost"]
Expand Down Expand Up @@ -517,6 +519,33 @@ async def mv3_extension(self, timeout: float = 10) -> Target:
self._mv3_extension = extension_target
return self._mv3_extension

async def enable_developer_mode(self, timeout: float = 10):
"""enable developer mode"""
if not self._is_developer_mode:
self._is_developer_mode = True
page = None
try:
base_ctx = self._base_context
page: Context = await base_ctx.new_window("tab", "chrome://extensions", activate=False)
script = """
async function make_dev_global(){
await chrome.developerPrivate.updateProfileConfiguration({
inDeveloperMode: true
});
};
await make_dev_global()
"""
await asyncio.sleep(0.1)
await page.eval_async(script, timeout=10, unique_context=False)
except Exception as e:
EXC_HANDLER(e)
self._is_developer_mode = False
if page:
await page.close()
await self.enable_developer_mode()
self._is_developer_mode = True
await page.close()

async def ensure_extensions_incognito_allowed(self):
"""
ensure that all installed Chrome-extensions are allowed in incognito context.
Expand Down