From 189c85719fe263721ba7596c6c87491294a4bcca Mon Sep 17 00:00:00 2001 From: Simon K <jackofspaces@gmail.com> Date: Tue, 14 Jun 2022 20:20:18 +0100 Subject: [PATCH] [py] remove `opera` (#10630) [py]: Completely remove `opera` for `4.3`. NOKEYCHECK=True GitOrigin-RevId: 17907d38c8e153f9d02ba4e294bce7843d4d6a41 --- MANIFEST.in | 1 - docs/source/api.rst | 10 -- .../selenium.webdriver.opera.webdriver.rst | 30 ----- selenium/webdriver/__init__.py | 1 - .../webdriver/common/desired_capabilities.py | 4 - selenium/webdriver/opera/__init__.py | 16 --- selenium/webdriver/opera/options.py | 113 ------------------ selenium/webdriver/opera/webdriver.py | 79 ------------ setup.py | 1 - .../webdriver/opera/opera_options_tests.py | 97 --------------- .../webdriver/remote/new_session_tests.py | 2 +- 11 files changed, 1 insertion(+), 353 deletions(-) delete mode 100644 docs/source/webdriver_opera/selenium.webdriver.opera.webdriver.rst delete mode 100644 selenium/webdriver/opera/__init__.py delete mode 100644 selenium/webdriver/opera/options.py delete mode 100644 selenium/webdriver/opera/webdriver.py delete mode 100644 test/unit/selenium/webdriver/opera/opera_options_tests.py diff --git a/MANIFEST.in b/MANIFEST.in index c73dec4c..ee571c0a 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -6,7 +6,6 @@ recursive-include selenium/webdriver/common/html5 *.py recursive-include selenium/common *.py recursive-include selenium/webdriver/chromium *.py recursive-include selenium/webdriver/chrome *.py -recursive-include selenium/webdriver/opera *.py recursive-include selenium/webdriver/phantomjs *.py recursive-include selenium/webdriver/firefox *.py *.xpi *.json recursive-include selenium/webdriver/ie *.py diff --git a/docs/source/api.rst b/docs/source/api.rst index 03f91b7a..5631e3a7 100644 --- a/docs/source/api.rst +++ b/docs/source/api.rst @@ -121,16 +121,6 @@ Webdriver.ie selenium.webdriver.ie.options selenium.webdriver.ie.webdriver -Webdriver.opera ---------------- - -.. currentmodule:: selenium.webdriver.opera -.. autosummary:: - :toctree: webdriver_opera - - selenium.webdriver.opera.webdriver - selenium.webdriver.opera.options - Webdriver.remote ---------------- diff --git a/docs/source/webdriver_opera/selenium.webdriver.opera.webdriver.rst b/docs/source/webdriver_opera/selenium.webdriver.opera.webdriver.rst deleted file mode 100644 index ca7f7557..00000000 --- a/docs/source/webdriver_opera/selenium.webdriver.opera.webdriver.rst +++ /dev/null @@ -1,30 +0,0 @@ -selenium.webdriver.opera.webdriver -================================== - -.. automodule:: selenium.webdriver.opera.webdriver - - - - - - - - - - - - .. rubric:: Classes - - .. autosummary:: - - OperaDriver - WebDriver - - - - - - - - - diff --git a/selenium/webdriver/__init__.py b/selenium/webdriver/__init__.py index 64c2ca87..ab37af0e 100644 --- a/selenium/webdriver/__init__.py +++ b/selenium/webdriver/__init__.py @@ -25,7 +25,6 @@ from .ie.options import Options as IeOptions # noqa from .edge.webdriver import WebDriver as Edge # noqa from .edge.webdriver import WebDriver as ChromiumEdge # noqa from .edge.options import Options as EdgeOptions # noqa -from .opera.webdriver import WebDriver as Opera # noqa from .safari.webdriver import WebDriver as Safari # noqa from .webkitgtk.webdriver import WebDriver as WebKitGTK # noqa from .webkitgtk.options import Options as WebKitGTKOptions # noqa diff --git a/selenium/webdriver/common/desired_capabilities.py b/selenium/webdriver/common/desired_capabilities.py index cbeeb8f8..706012ec 100644 --- a/selenium/webdriver/common/desired_capabilities.py +++ b/selenium/webdriver/common/desired_capabilities.py @@ -66,10 +66,6 @@ class DesiredCapabilities: "browserName": "chrome", } - OPERA = { - "browserName": "opera", - } - SAFARI = { "browserName": "safari", "platformName": "mac", diff --git a/selenium/webdriver/opera/__init__.py b/selenium/webdriver/opera/__init__.py deleted file mode 100644 index a5b1e6f8..00000000 --- a/selenium/webdriver/opera/__init__.py +++ /dev/null @@ -1,16 +0,0 @@ -# Licensed to the Software Freedom Conservancy (SFC) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The SFC licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. diff --git a/selenium/webdriver/opera/options.py b/selenium/webdriver/opera/options.py deleted file mode 100644 index b358bf31..00000000 --- a/selenium/webdriver/opera/options.py +++ /dev/null @@ -1,113 +0,0 @@ -# Licensed to the Software Freedom Conservancy (SFC) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The SFC licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -import warnings - -from selenium.webdriver.chrome.options import Options as ChromeOptions -from selenium.webdriver.common.desired_capabilities import DesiredCapabilities - - -class Options(ChromeOptions): - KEY = "operaOptions" - - def __init__(self): - warnings.warn(f"{self.__class__} is deprecated and will be removed in 4.3; " - f"see: https://www.selenium.dev/documentation/webdriver/getting_started/open_browser/#opera", - DeprecationWarning, stacklevel=2) - super().__init__() - self._android_package_name = '' - self._android_device_socket = '' - self._android_command_line_file = '' - - @property - def android_package_name(self): - """ - :Returns: The name of the Opera package - """ - return self._android_package_name - - @android_package_name.setter - def android_package_name(self, value): - """ - Allows you to set the package name - - :Args: - - value: devtools socket name - """ - self._android_package_name = value - - @property - def android_device_socket(self): - """ - :Returns: The name of the devtools socket - """ - return self._android_device_socket - - @android_device_socket.setter - def android_device_socket(self, value): - """ - Allows you to set the devtools socket name - - :Args: - - value: devtools socket name - """ - self._android_device_socket = value - - @property - def android_command_line_file(self): - """ - :Returns: The path of the command line file - """ - return self._android_command_line_file - - @android_command_line_file.setter - def android_command_line_file(self, value): - """ - Allows you to set where the command line file lives - - :Args: - - value: command line file path - """ - self._android_command_line_file = value - - def to_capabilities(self): - """ - Creates a capabilities with all the options that have been set and - returns a dictionary with everything - """ - capabilities = ChromeOptions.to_capabilities(self) - capabilities.update(self._caps) - opera_options = capabilities[self.KEY] - - if self.android_package_name: - opera_options["androidPackage"] = self.android_package_name - if self.android_device_socket: - opera_options["androidDeviceSocket"] = self.android_device_socket - if self.android_command_line_file: - opera_options["androidCommandLineFile"] = \ - self.android_command_line_file - return capabilities - - @property - def default_capabilities(self): - return DesiredCapabilities.OPERA.copy() - - -class AndroidOptions(Options): - - def __init__(self): - super().__init__() - self.android_package_name = 'com.opera.browser' diff --git a/selenium/webdriver/opera/webdriver.py b/selenium/webdriver/opera/webdriver.py deleted file mode 100644 index bbef7a82..00000000 --- a/selenium/webdriver/opera/webdriver.py +++ /dev/null @@ -1,79 +0,0 @@ -# Licensed to the Software Freedom Conservancy (SFC) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The SFC licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -import warnings - -from selenium.webdriver.chrome.webdriver import WebDriver as ChromiumDriver -from .options import Options - - -class OperaDriver(ChromiumDriver): - """Controls the new OperaDriver and allows you - to drive the Opera browser based on Chromium.""" - - def __init__(self, executable_path=None, port=0, - options=None, service_args=None, - desired_capabilities=None, service_log_path=None, - opera_options=None, keep_alive=True): - """ - Creates a new instance of the operadriver. - - Starts the service and then creates new instance of operadriver. - - :Args: - - executable_path - path to the executable. If the default is used - it assumes the executable is in the $PATH - - port - port you would like the service to run, if left as 0, - a free port will be found. - - options: this takes an instance of OperaOptions - - service_args - List of args to pass to the driver service - - desired_capabilities: Dictionary object with non-browser specific - - service_log_path - Where to log information from the driver. - capabilities only, such as "proxy" or "loggingPref". - """ - warnings.warn(f"{self.__class__} is deprecated and will be removed in 4.3; " - f"see: https://www.selenium.dev/documentation/webdriver/getting_started/open_browser/#opera", - DeprecationWarning, stacklevel=2) - executable_path = (executable_path if executable_path else "operadriver") - ChromiumDriver.__init__(self, - executable_path=executable_path, - port=port, - options=options, - service_args=service_args, - desired_capabilities=desired_capabilities, - service_log_path=service_log_path, - keep_alive=keep_alive) - - def create_options(self): - return Options() - - -class WebDriver(OperaDriver): - class ServiceType: - CHROMIUM = 2 - - def __init__(self, - desired_capabilities=None, - executable_path=None, - port=0, - service_log_path=None, - service_args=None, - options=None): - OperaDriver.__init__(self, executable_path=executable_path, - port=port, options=options, - service_args=service_args, - desired_capabilities=desired_capabilities, - service_log_path=service_log_path) diff --git a/setup.py b/setup.py index ed519f60..46368c5c 100755 --- a/setup.py +++ b/setup.py @@ -61,7 +61,6 @@ setup_args = { 'selenium.webdriver.firefox', 'selenium.webdriver.ie', 'selenium.webdriver.edge', - 'selenium.webdriver.opera', 'selenium.webdriver.remote', 'selenium.webdriver.support', ], 'include_package_data': True, diff --git a/test/unit/selenium/webdriver/opera/opera_options_tests.py b/test/unit/selenium/webdriver/opera/opera_options_tests.py deleted file mode 100644 index 052782c0..00000000 --- a/test/unit/selenium/webdriver/opera/opera_options_tests.py +++ /dev/null @@ -1,97 +0,0 @@ -# Licensed to the Software Freedom Conservancy (SFC) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The SFC licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -import pytest - -from selenium.webdriver.opera.options import Options - - -@pytest.fixture -def options(): - return Options() - - -def test_set_android_package_name(options): - options.android_package_name = 'bar' - assert options._android_package_name == 'bar' - - -def test_get_android_package_name(options): - options._android_package_name = 'bar' - assert options.android_package_name == 'bar' - - -def test_set_android_device_socket(options): - options.android_device_socket = 'bar' - assert options._android_device_socket == 'bar' - - -def test_get_android_device_socket(options): - options._android_device_socket = 'bar' - assert options.android_device_socket == 'bar' - - -def test_set_android_command_line_file(options): - options.android_command_line_file = 'bar' - assert options._android_command_line_file == 'bar' - - -def test_get_android_command_line_file(options): - options._android_command_line_file = 'bar' - assert options.android_command_line_file == 'bar' - - -def test_creates_capabilities(options): - options._arguments = ['foo'] - options._binary_location = '/bar' - options._extensions = ['baz'] - options._debugger_address = '/foo/bar' - options._experimental_options = {'foo': 'bar'} - options._android_package_name = 'bar' - options._android_command_line_file = 'foo' - options._android_device_socket = 'spam' - caps = options.to_capabilities() - opts = caps.get(Options.KEY) - assert opts - assert 'foo' in opts['args'] - assert opts['binary'] == '/bar' - assert 'baz' in opts['extensions'] - assert opts['debuggerAddress'] == '/foo/bar' - assert opts['foo'] == 'bar' - assert opts['androidPackage'] == 'bar' - assert opts['androidCommandLineFile'] == 'foo' - assert opts['androidDeviceSocket'] == 'spam' - - -def test_starts_with_default_capabilities(options): - from selenium.webdriver import DesiredCapabilities - caps = DesiredCapabilities.OPERA.copy() - caps.update({"pageLoadStrategy": "normal"}) - assert options._caps == caps - - -def test_is_a_baseoptions(options): - from selenium.webdriver.common.options import BaseOptions - assert isinstance(options, BaseOptions) - - -def test_opera_options_is_deprecated(options): - with pytest.warns(DeprecationWarning) as captured: - Options() - expected = "<class 'selenium.webdriver.opera.options.Options'> is deprecated and will be removed in 4.3; " \ - "see: https://www.selenium.dev/documentation/webdriver/getting_started/open_browser/#opera" - assert captured[0].message.args[0] == expected diff --git a/test/unit/selenium/webdriver/remote/new_session_tests.py b/test/unit/selenium/webdriver/remote/new_session_tests.py index 94a129ab..45e4e76c 100644 --- a/test/unit/selenium/webdriver/remote/new_session_tests.py +++ b/test/unit/selenium/webdriver/remote/new_session_tests.py @@ -55,7 +55,7 @@ def test_works_as_context_manager(mocker): assert quit_.call_count == 1 -@pytest.mark.parametrize('browser_name', ['firefox', 'chrome', 'ie', 'opera']) +@pytest.mark.parametrize('browser_name', ['firefox', 'chrome', 'ie']) def test_accepts_firefox_options_to_remote_driver(mocker, browser_name): options = import_module(f'selenium.webdriver.{browser_name}.options') caps_name = browser_name.upper() if browser_name != 'ie' else 'INTERNETEXPLORER'