簡體   English   中英

selenium.common.exceptions.WebDriverException:消息:未知錯誤:無法使用 OperaDriver Selenium 和 Python 找到 Opera 二進制文件

[英]selenium.common.exceptions.WebDriverException: Message: unknown error: cannot find Opera binary with OperaDriver Selenium and Python

我只是試圖讓一個簡單的 Python 腳本工作,它應該只打開 google。

我用 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)

這個錯誤信息...

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')

對我來說簡單的解決方案:我有一個 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 文件夾復制到我的 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 年 14 月 12 日最新的 operadriver.exe 和 Opera 更新。

請注意,我建議的修復有一個優勢,那就是 Opera 瀏覽器不會自動更新,因為我們將整個 73.0.3856.257_0 文件夾復制到了不同的位置,您必須手動復制最新的 Opera 更新文件夾,因此您不會意外地被更新刺痛了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM