第一次使用opera浏览器时,我的selenium代码抛出错误



我使用的是opera版本=91.0.4516.16和operadriver版本=105.0.5195.102。我无法使用最简单的代码操作浏览器,也就是:

from selenium import webdriver
from selenium.webdriver.opera.options import Options
s = Options()
s.binary_location = r'C:UsersAdminAppDataLocalProgramsOperalauncher.exe'
driver = webdriver.Opera( executable_path=r'F:ffmpegbinoperadriver.exe')
driver.get("http://google.com/")

我使用了不同的代码组合,但同样的错误一次又一次地发生。

错误为:

Traceback (most recent call last):
File "r:Youtubeoperatest.py", line 96, in <module>
driver = webdriver.Opera( executable_path=r'F:ffmpegbinoperadriver.exe')
File "R:avirtuallibsite-packagesseleniumwebdriveroperawebdriver.py", line 75, in __init__
OperaDriver.__init__(self, executable_path=executable_path,
File "R:avirtuallibsite-packagesseleniumwebdriveroperawebdriver.py", line 51, in __init__
ChromiumDriver.__init__(self,
File "R:google_account_Makeravirtuallibsite-packagesseleniumwebdriverchromewebdriver.py", line 70, in __init__        
super(WebDriver, self).__init__(DesiredCapabilities.CHROME['browserName'], "goog",
File "R:avirtuallibsite-packagesseleniumwebdriverchromiumwebdriver.py", line 92, in __init__      
RemoteWebDriver.__init__(
File "R:avirtuallibsite-packagesseleniumwebdriverremotewebdriver.py", line 275, in __init__       
self.start_session(capabilities, browser_profile)
File "R:avirtuallibsite-packagesseleniumwebdriverremotewebdriver.py", line 365, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "R:avirtuallibsite-packagesseleniumwebdriverremotewebdriver.py", line 430, in execute        
self.error_handler.check_response(response)
File "R:avirtuallibsite-packagesseleniumwebdriverremoteerrorhandler.py", line 247, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: Missing or invalid capabilities
(Driver info: operadriver=105.0.5195.102 (4c16f5ffcc2da70ee2600d5db77bed423ac03a5a-refs/branch-heads/5195_55@{#4}),platform=Windows NT 10.0.19042 x86_64)

编辑2:

更改代码后。WHich是:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from webdriver_manager.opera import OperaDriverManager
# from selenium.webdriver.opera.options import Options
options = webdriver.ChromeOptions()
options.add_argument('allow-elevated-browser')
options.add_experimental_option('w3c', True)
options.binary_location = r"C:UsersAdminAppDataLocalProgramsOperalauncher.exe"
driver = webdriver.Chrome(executable_path=OperaDriverManager().install(), options=options)
driver.get("https://www.google.com")

错误为:

r:google_account_MakerYoutube_channels_makeroperatest.py:120: DeprecationWarning: executable_path has been deprecated, please pass in a Service object
driver = webdriver.Chrome(executable_path=OperaDriverManager().install(), options=options)
Traceback (most recent call last):
File "r:google_account_MakerYoutube_channels_makeroperatest.py", line 120, in <module>
driver = webdriver.Chrome(executable_path=OperaDriverManager().install(), options=options)
File "R:google_account_Makeravirtuallibsite-packagesseleniumwebdriverchromewebdriver.py", line 70, in __init__        
super(WebDriver, self).__init__(DesiredCapabilities.CHROME['browserName'], "goog",
File "R:google_account_Makeravirtuallibsite-packagesseleniumwebdriverchromiumwebdriver.py", line 92, in __init__      
RemoteWebDriver.__init__(
File "R:google_account_Makeravirtuallibsite-packagesseleniumwebdriverremotewebdriver.py", line 275, in __init__       
self.start_session(capabilities, browser_profile)
File "R:google_account_Makeravirtuallibsite-packagesseleniumwebdriverremotewebdriver.py", line 365, in start_session  
response = self.execute(Command.NEW_SESSION, parameters)
File "R:google_account_Makeravirtuallibsite-packagesseleniumwebdriverremotewebdriver.py", line 430, in execute        
self.error_handler.check_response(response)
File "R:google_account_Makeravirtuallibsite-packagesseleniumwebdriverremoteerrorhandler.py", line 247, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Opera failed to start: exited normally.
(unknown error: DevToolsActivePort file doesn't exist)
(The process started from opera location C:UsersAdminAppDataLocalProgramsOperalauncher.exe is no longer running, so OperaDriver is assuming that Opera has crashed.)
Stacktrace:
Backtrace:
Ordinal0 [0x00007FF69BAE84A2+2720930]
Ordinal0 [0x00007FF69BA5EF02+2158338]
Ordinal0 [0x00007FF69B939637+955959]
Ordinal0 [0x00007FF69B961D71+1121649]
Ordinal0 [0x00007FF69B95CF6A+1101674]
Ordinal0 [0x00007FF69B99A829+1353769]
Ordinal0 [0x00007FF69B994B63+1330019]
Ordinal0 [0x00007FF69B967E6C+1146476]
Ordinal0 [0x00007FF69B969298+1151640]
GetHandleVerifier [0x00007FF69BDFD5F8+3154216]
GetHandleVerifier [0x00007FF69BDEE40D+3092285]
GetHandleVerifier [0x00007FF69BB9488C+627644]
GetHandleVerifier [0x00007FF69BB93643+622963]
Ordinal0 [0x00007FF69BA67DDF+2194911]
Ordinal0 [0x00007FF69BA6D284+2216580]
Ordinal0 [0x00007FF69BA6D3FB+2216955]
Ordinal0 [0x00007FF69BA79F30+2268976]
BaseThreadInitThunk [0x00007FF804EC7034+20]
RtlUserThreadStart [0x00007FF8069C2651+33]

我不明白为什么歌剧院一次又一次地崩溃。请帮我理解。

解决方案

含硒==4.2.0你可以解决你的问题。

还有一件事,我们不能在最新版本的硒中使用opera的原因是opera不遵循w3的规则,这就是为什么它被硒删除的原因

from webdriver_manager.opera import OperaDriverManager
from selenium import webdriver
options = webdriver.ChromeOptions()
opera_profile = r"C:\Users\LEGEND\AppData\Roaming\Opera Software\Opera Stable"
options.add_argument('user-data-dir=' + opera_profile)
options._binary_location = r'C:\Users\LEGEND\AppData\Local\Programs\Opera\launcher.exe'
options = webdriver.ChromeOptions()
options.add_argument('allow-elevated-browser')
options.add_experimental_option('w3c', True)
driver = webdriver.Opera(executable_path=OperaDriverManager().install(), options=options)
driver.get('https://whatsmyip.com')
driver.quit()

我希望它能解决您使用operadriver.exe 的问题

解决方案

使用selenium4作为键executable_path是不推荐的,您必须使用Service()类的实例和ChromeDriverManager().install()命令,如下所述。

先决条件确保:

Selenium升级到v4.0.0

pip3 install -U selenium

Python的Webdriver Manager已安装

pip3 install webdriver-manager

硒v4兼容代码块

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get("https://www.google.com")

添加了Chrome的答案,请确保更改为opera。

最新更新