|
22 | 22 |
|
23 | 23 |
|
24 | 24 | class Options(ChromiumOptions): |
| 25 | + def __init__(self) -> None: |
| 26 | + super().__init__() |
| 27 | + self._enable_webextensions = False |
| 28 | + |
25 | 29 | @property |
26 | 30 | def default_capabilities(self) -> dict: |
27 | 31 | return DesiredCapabilities.CHROME.copy() |
28 | 32 |
|
| 33 | + @property |
| 34 | + def enable_webextensions(self) -> bool: |
| 35 | + """Returns whether webextension support is enabled for Chrome. |
| 36 | +
|
| 37 | + :Returns: True if webextension support is enabled, False otherwise. |
| 38 | + """ |
| 39 | + return self._enable_webextensions |
| 40 | + |
| 41 | + @enable_webextensions.setter |
| 42 | + def enable_webextensions(self, value: bool) -> None: |
| 43 | + """Enables or disables webextension support for Chrome. |
| 44 | +
|
| 45 | + When enabled, this automatically adds the required Chrome flags: |
| 46 | + - --enable-unsafe-extension-debugging |
| 47 | + - --remote-debugging-pipe |
| 48 | +
|
| 49 | + :Args: |
| 50 | + - value: True to enable webextension support, False to disable. |
| 51 | + """ |
| 52 | + self._enable_webextensions = value |
| 53 | + if value: |
| 54 | + # Add required flags for Chrome webextension support |
| 55 | + required_flags = ["--enable-unsafe-extension-debugging", "--remote-debugging-pipe"] |
| 56 | + for flag in required_flags: |
| 57 | + if flag not in self._arguments: |
| 58 | + self.add_argument(flag) |
| 59 | + else: |
| 60 | + # Remove webextension flags if disabling |
| 61 | + flags_to_remove = ["--enable-unsafe-extension-debugging", "--remote-debugging-pipe"] |
| 62 | + for flag in flags_to_remove: |
| 63 | + if flag in self._arguments: |
| 64 | + self._arguments.remove(flag) |
| 65 | + |
29 | 66 | def enable_mobile( |
30 | 67 | self, |
31 | 68 | android_package: Optional[str] = "com.android.chrome", |
|
0 commit comments