簡體   English   中英

微軟邊緣使用 python selenium

[英]Using python selenium for Microsoft edge

我正在嘗試將 pythons selenium 用於 Microsoft edge,但我不斷收到此錯誤:

WebDriverException: Message: unknown error: cannot find Microsoft Edge binary

我下載了最新版本的邊緣驅動程序。 這是我的代碼:

from selenium import webdriver
from selenium.webdriver.remote import webelement
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
import pandas as pd
import time
from bs4 import BeautifulSoup
import os
from datetime import datetime
from selenium.webdriver import ActionChains

driver = webdriver.Edge(executable_path = 'C:\\Users\\Downloads\\edgedriver_win32\\msedgedriver.exe')
def get_trulia_estimate(address):
    driver.get('https://www.trulia.com/')
    print(address)
    element = (By.ID, 'homepageSearchBoxTextInput')

    WebDriverWait(driver, 10).until(EC.element_to_be_clickable(element)).click()
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable(element)).send_keys(address)

    search_button = (By.CSS_SELECTOR, "button[data-auto-test-id='searchButton']")

    WebDriverWait(driver, 50).until(EC.element_to_be_clickable(search_button)).click()

    time.sleep(3) 

這篇文章現在已經很老了,但希望我可以幫助將來偶然發現相同問題的任何人!

問題是您使用了錯誤的網絡驅動程序。 Edge 存在兩個不同的版本,在兩個不可互換的引擎上實現——Chromium Edge 和 EdgeHTML(撰寫本文時的默認版本)。 這兩個版本中的每一個都有與之關聯的不同 webdriver,Chromium Edge 是“msedgedriver.exe”,EdgeHTML 是“MicrosoftWebDriver.exe”。

您正在使用 EdgeHTML 版本,同時嘗試運行 Chromium Edge webdriver。 Selenium 吐出的“找不到 Microsoft Edge 二進制文件”錯誤就是由此而來。

幸運的是,安裝正確的 webdriver 很容易。 如果您有 Edge 17 或更早版本,您可以在此處安裝驅動程序。 確保您下載 EdgeHTML 驅動程序,而不是 Chromium 驅動程序,並將其添加到您的 PATH。 對於 Edge 18 及更高版本,您無需下載任何內容。 只需在命令提示符下運行命令: DISM.exe /Online /Add-Capability /CapabilityName:Microsoft.WebDriver~~~~0.0.1.0

WebDriver 找不到您的 MS Edge 路徑,您可以嘗試卸載並重新安裝 Edge。 如果它不會幫助將邊緣位置添加到您的系統路徑或使用 --binary 參數。

James L的答案是完美的總結。 我有 Microsoft EdgeHTML 18.17763,因此我嘗試運行以下命令:

DISM.exe /Online /Add-Capability /CapabilityName:Microsoft.WebDriver~~~~0.0.1.0

這執行成功。 但是,這次在運行我的代碼時,出現錯誤:

Message=一個帶有空響應的異常被拋出一個 HTTP 請求到遠程 WebDriver 服務器的 URL http://localhost:52109/session 異常狀態為 ReceiveFailure,消息為:基礎連接已關閉:接收時發生意外錯誤。

看起來我們還需要在Windows>>Settings>>Developer Options啟用開發Windows>>Settings>>Developer Options ,由於我沒有管理員權限,我目前無法這樣做。

您必須像安裝 Chromedriver 一樣安裝 msedge 驅動程序。

  1. 您首先檢查您的 edge 是哪個版本,然后從 Microsoft Page 下載 de Edge 驅動程序
  2. 根據您的瀏覽器版本下載並解壓 msededriver 文件
  3. 在終端中安裝它的 package 到 python (pip install msedge-selenium-tools selenium==3.141)
  4. 最后嘗試獲取瀏覽器的代碼: from selenium import webdriver

edgeBrowser = webdriver.Edge(r"C:....\msededriver.exe") edgeBrowser.get('https://www.google.com')

暫無
暫無

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

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