operachromiumdriver
operachromiumdriver copied to clipboard
Cannot Parse SOCKS Proxy
Description
The operadriver cannot parse SOCKS proxy. I try to use http proxy and it's working well.
Reproduce
#!/usr/bin/env python3
# selenium 3.14.1, Python 3.7.0, OperaDriver=2.38
from selenium import webdriver
from selenium.webdriver.common.proxy import Proxy, ProxyType
options = webdriver.ChromeOptions()
options.binary_location = "/usr/bin/opera"
caps = webdriver.DesiredCapabilities.OPERA
proxy = Proxy()
proxy.proxy_type = ProxyType.MANUAL
proxy.socks_proxy = "localhost:8132"
proxy.add_to_capabilities(caps)
driver = webdriver.Opera(options=options, desired_capabilities=caps)
driver.get('https://example.com')
Result
Traceback (most recent call last):
File "./launch_opera_proxy.py", line 15, in <module>
driver = webdriver.Opera(options=options, desired_capabilities=caps)
File "/home/username/Desktop/working/python-selenium/py3env/lib/python3.7/site-packages/selenium/webdriver/opera/webdriver.py", line 83, in __init__
service_log_path=service_log_path)
File "/home/username/Desktop/working/python-selenium/py3env/lib/python3.7/site-packages/selenium/webdriver/opera/webdriver.py", line 62, in __init__
keep_alive=keep_alive)
File "/home/username/Desktop/working/python-selenium/py3env/lib/python3.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 81, in __init__
desired_capabilities=desired_capabilities)
File "/home/username/Desktop/working/python-selenium/py3env/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
self.start_session(capabilities, browser_profile)
File "/home/username/Desktop/working/python-selenium/py3env/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/home/username/Desktop/working/python-selenium/py3env/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/home/username/Desktop/working/python-selenium/py3env/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: cannot parse capability: proxy
from unknown error: proxyType is 'manual' but no manual proxy capabilities were found
(Driver info: OperaDriver=2.38 (8379e5641ac71cae6a8208a850479e7098d2bd02),platform=Linux x86_64)
As a temporary workaround, one can add this command line argument --proxy-server=socks5://localhost:8123 into OperaOptions and it works well.
Here is a Java example:
OperaOptions options = new OperaOptions();
options.setBinary("/usr/bin/opera");
options.addArguments("--proxy-server=socks5://" + socks_proxy);
desiredCapabilities.setCapability(OperaOptions.CAPABILITY, options);