繁体   English   中英

如何确定哪个 MS Edge 驱动程序与我的操作系统版本兼容,以启用 web 自动化和 Python 的 Selenium?

[英]How do I determine which MS Edge Driver is compatible with my OS Version to enable web automation with Selenium for Python?

一段时间以来,我一直在使用 Selenium 和边缘驱动程序。 我一直在通过指定executable_path=参数来实例化我的 Edge Driver,没有任何问题。 但是,我最近将我的 web 自动化项目切换为使用webdriver_manager ,即webdriver_manager.microsoft import EdgeChromiumDriverManager 现在,当我命令驱动程序导航到任何网页时 - 它会打开一秒钟,然后立即关闭。 我正在进行的当前故障排除步骤是确保我正在使用的 Edge 驱动程序(通过使用webdriver_manager模块下载的驱动程序)与我当前的操作系统版本兼容,但现在我很难过。 我不知道如何找到与我当前的操作系统版本兼容/正确的 MS Edge 驱动程序 - 在比较两者时我看不到任何模式,例如:

我目前的操作系统:

在此处输入图像描述

webdriver_manager 下载的webdriver_manager

在此处输入图像描述

这是所有 MS Edge 驱动程序的链接:

https://msedgewebdriverstorage.z22.web.core.windows.net/

那么,如何找到适合我的操作系统的 Edge 驱动程序? 当我查看这两个数字时:操作系统版本 - 22000.795 和 Edge webdriver 版本 - 103.0.1264.77; 我看不到确定哪个驱动程序兼容的模式或方法。 也许,我不正确地使用了webdriver_manager模块? 我知道我可以使用可执行路径,但我的印象是使用webriver_manager自动为您安装新版本,因此您将来不必将脚本更新为新的边缘驱动程序。

对于其他上下文,这是我的代码(仅以 Facebook 的域为例):

from selenium import webdriver
from selenium.webdriver.edge.service import Service as EdgeService
from webdriver_manager.microsoft import EdgeChromiumDriverManager

driver = webdriver.Edge(service = EdgeService(EdgeChromiumDriverManager().install()))

driver.get('https://facebook.com')

SeleniumBase驱动程序管理器与 Edge 配合得很好:

from seleniumbase import get_driver

driver = get_driver("edge", headless=False)
driver.get("https://facebook.com")
import time; time.sleep(1)
driver.quit()

(这是另一个使用原始驱动程序管理器的示例: raw_browser_launcher.py

或者,您可以使用更简单的格式和自动设置和拆卸,但是您需要使用pytest运行测试并添加--edge作为使用 Edge 的命令行选项:

from seleniumbase import BaseCase

class MyTestClass(BaseCase):
    def test_facebook(self):
        self.open("https://facebook.com")
        self.sleep(1)
pytest test_facebook.py --edge
========================= test session starts ==========================
platform darwin -- Python 3.10.5, pytest-7.1.2, pluggy-1.0.0
rootdir: /Users/michael/github/SeleniumBase/examples, configfile: pytest.ini
plugins: html-2.0.1, xdist-2.5.0, forked-1.4.0, rerunfailures-10.2, ordering-0.6, cov-3.0.0, metadata-2.0.2, seleniumbase-3.5.11
collected 1 item                                                       

test_facebook.py .

========================== 1 passed in 4.40s ===========================

它现在正在工作(即,在我原来的问题中使用相同的代码示例,MS Edge window 现在按命令打开并保持打开状态)。 我找到了有关 Edge webdriver 安装/配置的 MS Docs

https://docs.microsoft.com/en-us/microsoft-edge/webdriver-chromium/?tabs=c-sharp

这是我遵循的步骤:

  1. 第一步是确保您的 Edge webdriver ("msedgedriver.exe") 版本与您的 Edge浏览器版本匹配(我读过一篇技术博客说我的操作系统构建版本需要与我的 "msedgedriver.exe" 版本匹配 - 认为这可能是错误的现在?)

  2. 我在设置中导航到关于 Microsoft Edge :edge://settings/help

它显示了我当前的 MS Edge 版本 - 它被提示更新 Edge - 所以我做到了。 更新后检查,我的版本是: 104.0.1293.47

  1. 一时兴起,我怀疑我的 Edge 浏览器更新可能是导致webdriver_manager下载不兼容的msedgedriver.exe的原因,我尝试再次运行我的脚本(与我在原始问题中发布的完全相同)

它起作用了——我马上检查了msedgedriver.exe版本,发现webdriver_manager下载了一个新版本:104.0.1293——它与我当前的 Edge 浏览器版本相匹配。

所以,我不能 100% 确定webdriver_manager未能下载正确版本(以匹配我的浏览器)的原因是什么 - 但在我更新我的 MS Edge 浏览器之前,没有安装新的驱动程序。 然后在更新并运行脚本后,安装了正确的驱动程序,它现在工作正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM