首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我的selenium代码第一次使用opera浏览器时抛出错误

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

Stack Overflow用户
提问于 2022-09-19 11:27:14
回答 2查看 178关注 0票数 0

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

代码语言:javascript
运行
复制
from selenium import webdriver
from selenium.webdriver.opera.options import Options

s = Options()
s.binary_location = r'C:\Users\Admin\AppData\Local\Programs\Opera\launcher.exe'
driver = webdriver.Opera( executable_path=r'F:\ffmpeg\bin\operadriver.exe')
driver.get("http://google.com/")

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

错误是:

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "r:\Youtube\operatest.py", line 96, in <module>
    driver = webdriver.Opera( executable_path=r'F:\ffmpeg\bin\operadriver.exe')
  File "R:\avirtual\lib\site-packages\selenium\webdriver\opera\webdriver.py", line 75, in __init__
    OperaDriver.__init__(self, executable_path=executable_path,
  File "R:\avirtual\lib\site-packages\selenium\webdriver\opera\webdriver.py", line 51, in __init__
    ChromiumDriver.__init__(self,
  File "R:\google_account_Maker\avirtual\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 70, in __init__        
    super(WebDriver, self).__init__(DesiredCapabilities.CHROME['browserName'], "goog",
  File "R:\avirtual\lib\site-packages\selenium\webdriver\chromium\webdriver.py", line 92, in __init__      
    RemoteWebDriver.__init__(
  File "R:\avirtual\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 275, in __init__       
    self.start_session(capabilities, browser_profile)
  File "R:\avirtual\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 365, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "R:\avirtual\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 430, in execute        
    self.error_handler.check_response(response)
  File "R:\avirtual\lib\site-packages\selenium\webdriver\remote\errorhandler.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是:

代码语言:javascript
运行
复制
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:\Users\Admin\AppData\Local\Programs\Opera\launcher.exe"
driver = webdriver.Chrome(executable_path=OperaDriverManager().install(), options=options)
driver.get("https://www.google.com")

错误是:

代码语言:javascript
运行
复制
r:\google_account_Maker\Youtube_channels_maker\operatest.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_Maker\Youtube_channels_maker\operatest.py", line 120, in <module>
    driver = webdriver.Chrome(executable_path=OperaDriverManager().install(), options=options)
  File "R:\google_account_Maker\avirtual\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 70, in __init__        
    super(WebDriver, self).__init__(DesiredCapabilities.CHROME['browserName'], "goog",
  File "R:\google_account_Maker\avirtual\lib\site-packages\selenium\webdriver\chromium\webdriver.py", line 92, in __init__      
    RemoteWebDriver.__init__(
  File "R:\google_account_Maker\avirtual\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 275, in __init__       
    self.start_session(capabilities, browser_profile)
  File "R:\google_account_Maker\avirtual\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 365, in start_session  
    response = self.execute(Command.NEW_SESSION, parameters)
  File "R:\google_account_Maker\avirtual\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 430, in execute        
    self.error_handler.check_response(response)
  File "R:\google_account_Maker\avirtual\lib\site-packages\selenium\webdriver\remote\errorhandler.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:\Users\Admin\AppData\Local\Programs\Opera\launcher.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]

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

EN

回答 2

Stack Overflow用户

发布于 2022-10-20 07:41:27

溶液

使用selenium==4.2.0,您可以解决问题。

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

代码语言:javascript
运行
复制
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的问题

票数 1
EN

Stack Overflow用户

发布于 2022-09-20 12:49:30

溶液

如果不推荐使用selenium4作为键executable_path,那么您必须使用Service()类的一个实例以及ChromeDriverManager().install()命令,如下所述。

先决条件确保:

Selenium升级到v4.0.0

代码语言:javascript
运行
复制
pip3 install -U selenium

安装了用于Python的Webdriver

代码语言:javascript
运行
复制
pip3 install webdriver-manager

Selenium v4兼容代码块

代码语言:javascript
运行
复制
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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73772684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档