1

我只是试图让一个简单的 Python 脚本工作,它应该只打开谷歌。

我用 pip 安装了 selenium,并将从 selenium 页面下载的 operadriver 放入我的 python 路径中。也看了很多关于它的视频,但我找不到解决方案..

这是代码:

from selenium import webdriver
import time

driver = webdriver.Opera()
driver.get('http://www.google.com')

错误:

Traceback (most recent call last):
  File "C:/Users/Tom/AppData/Local/Programs/Python/Python37-32/Scripts/automate.py", line 4, in <module>
    driver = webdriver.Opera()
  File "C:\Users\Tom\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\opera\webdriver.py", line 83, in __init__
    service_log_path=service_log_path)
  File "C:\Users\Tom\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\opera\webdriver.py", line 62, in __init__
    keep_alive=keep_alive)
  File "C:\Users\Tom\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 81, in __init__
    desired_capabilities=desired_capabilities)
  File "C:\Users\Tom\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "C:\Users\Tom\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "C:\Users\Tom\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Users\Tom\AppData\Local\Programs\Python\Python37-32\lib\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 find Opera binary
  (Driver info: OperaDriver=2.40 (a50783a565882ef2022bea655e8560f37ecf8afe),platform=Windows NT 6.1.7601 SP1 x86_64)
4

2 回答 2

1

此错误消息...

selenium.common.exceptions.WebDriverException: Message: unknown error: cannot find Opera binary
  (Driver info: OperaDriver=2.40 (a50783a565882ef2022bea655e8560f37ecf8afe),platform=Windows NT 6.1.7601 SP1 x86_64)

...表示未在所需位置找到Opera 浏览器二进制文件。

您的主要问题是Opera 浏览器未安装在默认位置。所以需要提一下Opera浏览器安装位置的绝对路径如下:

from selenium import webdriver
from selenium.webdriver.opera.options import Options

options = Options()
options.binary_location = r'C:\path\to\opera.exe'
driver = webdriver.Opera(opera_options = options, executable_path=r'C:\Utility\BrowserDrivers\operadriver.exe')
driver.get('http://www.google.com')
于 2018-10-13T16:15:24.770 回答
0

对我来说简单的解决方案:我有一个 Feedscode 文件夹,我的 chromedriver.exe 和我的operadriver.exe 位于我运行 file.ipynb 文件的下载文件夹中。

错误非常明显,它正在寻找 opera.exe 的错误位置,这个问题是在 Opera 更新到 73.0.3856.257_0 后对我开始的,这是截至 2020 年 12 月 14 日的最新 Opera 文件夹更新。

我修复歌剧的方法是我拿走了 C:\Users\your_user_name_here\AppData\Local\Programs\Opera\73.0.3856.257_0 文件夹,然后简单地将文件夹 73.0.3856.257_0 复制到我的 downloads\feedscode 文件夹然后复制了我的 .ipynb文件和我的operadriver.exe 和chromedriver.exe 文件到73.0.3856.257_0 文件夹,然后我在运行该过程之前进行了这一更改。

chrome_path = "C:\Users\User_name_here\Downloads\FeedsCode\73.0.3856.257_0\operadriver.exe"

现在该过程按预期工作。

所以这个错误显然是由于它在operadriver.exe所在的文件夹中寻找opera.exe。你有2个选项1.等待修复或2.按照我上面显示的那样做。

我相信这会对很多人有所帮助,因为这里的原始答案并不适合我每个人都喜欢。

注意chromedriver.exe没有这个问题,所以你可以简单地使用chromedriver.exe代替operadriver.exe。我还在 Opera 更新中注意到,当我们运行进程时,只要进程窗口保持在屏幕上,它就会正常工作,如果我们转到另一个任务窗口,它将停止,直到您打开进程屏幕备份。chromedriver.exe 不会发生这种情况,只有截至 2020 年 12 月 14 日的最新 operadriver.exe 和 Opera 更新。

请注意,我建议的修复有一个优势,那就是 Opera 浏览器不会自动更新,因为我们将整个 73.0.3856.257_0 文件夹复制到不同的位置,您必须手动复制最新的 Opera 更新文件夹,所以您不会意外地被更新刺痛。

于 2020-12-16T05:22:02.143 回答