问题
I'm using Microsoft Edge Webdriver (Chromium) with Python3 in my script.
The webdriver configuration is as follows:
driveroptions = Options()
driveroptions.add_argument('--inprivate')
driveroptions.add_argument('--disable-infobars')
driveroptions.add_argument('--start-maximized')
driveroptions.add_argument('--auto-open-devtools-for-tabs')
driveroptions.add_argument('--user-data-dir=D:\\Selenium_Edge_Chromium_UserData')
driveroptions.binary_location = "C:\\Users\\Administrator\\AppData\\Local\\Microsoft\\Edge SxS\\Application\\msedge.exe"
# driver = webdriver.Chrome(options=driveroptions, executable_path="msedgedriver.309.exe", service_log_path="D:\\X.txt")
driver = webdriver.Chrome(options=driveroptions, executable_path="msedgedriver.exe", service_log_path="D:\\X.txt")
driver.set_page_load_timeout(40)
wait = WebDriverWait(driver, 40)
driver.get(base_url)
It works well since the 1st time I used Canary, but after version 79.0.309.0 (not included), the driver simply returns the error:
Message: session not created: No matching capabilities found
And the service log here:
[1572262712.029][INFO]: Starting MSEdgeDriver 80.0.315.0 (9e44865e0573123f4459e64bc4e043fee13eb7ec)
[1572262712.029][INFO]: Please protect ports used by MSEdgeDriver and related test frameworks to prevent access by malicious code.
[1572262712.567][INFO]: [0b47b609c87652c1d1f004bfac456076] COMMAND InitSession {
"capabilities": {
"alwaysMatch": {
"browserName": "chrome",
"goog:chromeOptions": {
"args": [ "--inprivate", "--disable-infobars", "--start-maximized", "--auto-open-devtools-for-tabs", "--user-data-dir=D:\\Selenium_Edge_Chromium_UserData" ],
"binary": "C:\\Users\\Administrator\\AppData\\Local\\Microsoft\\Edge SxS\\Application\\msedge.exe",
"extensions": [ ]
},
"platformName": "any"
},
"firstMatch": [ {
} ]
},
"desiredCapabilities": {
"browserName": "chrome",
"goog:chromeOptions": {
"args": [ "--inprivate", "--disable-infobars", "--start-maximized", "--auto-open-devtools-for-tabs", "--user-data-dir=D:\\Selenium_Edge_Chromium_UserData" ],
"binary": "C:\\Users\\Administrator\\AppData\\Local\\Microsoft\\Edge SxS\\Application\\msedge.exe",
"extensions": [ ]
},
"platform": "ANY",
"version": ""
}
}
[1572262712.571][INFO]: [0b47b609c87652c1d1f004bfac456076] RESPONSE InitSession ERROR session not created: No matching capabilities found
I can still use my script if the msedgedriver version is kept at 79.0.309.0.
But what happened to the newer versions of msedgedriver (79.0.313.0, 80.0.315.0 etc.)?
Are they dropping some supported capabilities?
Updated:
Microsoft Edge (Chromium): 80.0.315.0
msedgedriver for Microsoft Edge (Chromium): 80.0.315.0
->
Message: session not created: No matching capabilities found
Microsoft Edge (Chromium): 79.0.313.0
msedgedriver for Microsoft Edge (Chromium): 79.0.313.0
->
Message: session not created: No matching capabilities found
Microsoft Edge (Chromium): 79.0.309.0
msedgedriver for Microsoft Edge (Chromium): 79.0.309.0
->
(Works well without issue)
and with 79.0.309.0 (and older) msedgedriver:
Microsoft Edge (Chromium): (version before 79.0.309.0)
msedgedriver for Microsoft Edge (Chromium): (version before 79.0.309.0, = browser version)
->
(Works without issue)
Microsoft Edge (Chromium): 79.0.309.0
msedgedriver for Microsoft Edge (Chromium): 79.0.309.0
->
(Works without issue)
Microsoft Edge (Chromium): 79.0.313.0
msedgedriver for Microsoft Edge (Chromium): 79.0.309.0
->
(Works without issue)
Microsoft Edge (Chromium): 80.0.315.0
msedgedriver for Microsoft Edge (Chromium): 79.0.309.0
->
(Works without issue)
PS: My GetEdgeDriver.BAT which compares the version of currently installed Microsoft Edge (Chromium) Canary browser with currently downloaded webdriver from https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/. If the latter is lower than the former, it downloads the msedgedriver.exe and overwrites the old one.
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
REM GNUWIN32 required
REM SET ONEDRIVE=%UserProfile%\OneDrive
REM This file is located in OneDrive\Files\BIN
SET ONEDRIVE=%~DP0..\..
SET EDGE_DIR=%UserProfile%\AppData\Local\Microsoft\Edge SxS\Application
IF NOT EXIST "%EDGE_DIR%\msedge.exe" ECHO MSEdge not found at %EDGE_DIR%! & GOTO :EOF
FOR /F %%I IN ('DIR /B "%EDGE_DIR%" ^| grep -E [0-9]+\.[0-9]+\.') DO SET MSEDGE_VERSION=%%I& GOTO :MSEDGE_VERSION_RETRIEVED
:MSEDGE_VERSION_RETRIEVED
ECHO MSEdge browser version: %MSEDGE_VERSION%
FOR /F %%I IN ('MSEDGEDRIVER -V ^| awk "{print $2}"') DO SET HAVE_DRIVER_VERSION=%%I& GOTO :HAVE_DRIVER_VERSION_RETRIEVED
:HAVE_DRIVER_VERSION_RETRIEVED
ECHO MSEdge driver version in OneDrive: %HAVE_DRIVER_VERSION%
REM e.g. https://msedgedriver.azureedge.net/79.0.287.0/edgedriver_win64.zip
IF %MSEDGE_VERSION% GTR %HAVE_DRIVER_VERSION% (
SET URL=https://msedgedriver.azureedge.net/%MSEDGE_VERSION%/edgedriver_win64.zip
ECHO.
ECHO Downloading !URL! -^> %TEMP%\edgedriver_win64_%MSEDGE_VERSION%.zip
REM -C -
REM continue previous download and skip if existing download
REM -k --insecure
curl -C - -s -L -k -o "%TEMP%\edgedriver_win64_%MSEDGE_VERSION%.zip" -g "!URL!"
REM curl -C - -s -L --insecure -o "%TEMP%\edgedriver_win64_%MSEDGE_VERSION%.zip" -g "!URL!"
REM unzip -uoqq "%TEMP%\edgedriver_win64_%MSEDGE_VERSION%.zip"
ECHO Extracting %TEMP%\edgedriver_win64_%MSEDGE_VERSION%.zip -^> %~DP0msedgedriver.exe
REM extract msedgedriver.exe inside edgedriver_win64_%MSEDGE_VERSION%.zip to %ONEDRIVE%\Files\BIN folder with the same name
REM 7z x -y -o"C:\Users\Administrator\OneDrive\Files\BIN" "%TEMP%\edgedriver_win64_%MSEDGE_VERSION%.zip" msedgedriver.exe > nul
7z x -y -o"%ONEDRIVE%\Files\BIN" "%TEMP%\edgedriver_win64_%MSEDGE_VERSION%.zip" msedgedriver.exe > nul
REM MSEDGEDRIVER -V
FOR /F %%I IN ('MSEDGEDRIVER -V ^| awk "{print $2}"') DO SET HAVE_DRIVER_VERSION=%%I& GOTO :NEW_DRIVER_VERSION_RETRIEVED
:NEW_DRIVER_VERSION_RETRIEVED
ECHO New MSEdge driver version in OneDrive: %HAVE_DRIVER_VERSION%
)
回答1:
I tried the capabilities like below, it worked, you can have a try:
{
"desiredCapabilities": {
"nativeEvents": false,
"browserName": "chrome",
"version": "",
"platform": "ANY",
"javascriptEnabled": true,
...
}
}
来源:https://stackoverflow.com/questions/58590613/msedgedriver-chromium-does-not-work-after-version-79-0-309-0