XiaoJiang0208 / TarkovMapTool

基于塔科夫截图的地图坐标分析工具
27 stars 10 forks source link

feat: 支持同级目录下引用 selenium driver #12

Closed Amovement closed 6 months ago

XiaoJiang0208 commented 7 months ago

这怎么确定用户就能用这个版本的driver呢,重装edge更好好像🤔

Amovement commented 7 months ago

是的。我说让他更新一下edge版本,但是对方表示已经是最新的了。 然后一看版本,是edge release 121下的一个小版本,这种情况下好像点自动更新也不会升级。 理论上 manager 应该会自动下载对应版本吧,现在的问题是他的 manager 无法访问到对应的url(可以看我上传的照片),这是一个很难排查究竟是什么导致的问题(可能是网络?),我觉得就算重装了也是一样的问题。 确定版本到是小事,帮他捣鼓这什么卸载更新和网络的问题才是头大,昨晚改完代码,新的驱动一发直接可以用了,后面再有同样的问题也可以直接发对应版本驱动解决,而不是让对方卸载啥的。 或者这个找不到对应版本的问题有什么解决的方案吗?因为我之前使用sele都是本地的驱动,所以这次也出此下策了。

XiaoJiang0208 commented 7 months ago

这样写的话要是我根目录没这个文件会怎么样,报错?我现在没电脑测试。要是不会报错,会自动找默认driver那就ok

A5rZ commented 7 months ago

尝试检测版本?

from selenium import webdriver
from webdriver_manager.microsoft import EdgeChromiumDriverManager
from webdriver_manager.utils import ChromeType

# 指定需要检查的Edge浏览器版本
required_version = '95.0.1020.40'

# 尝试使用特定版本的WebDriver
try:
    # 使用webdriver-manager来管理Edge WebDriver
    # 通过version参数指定所需版本
    driver = webdriver.Edge(EdgeChromiumDriverManager(version=required_version, chrome_type=ChromeType.EDGE).install())
    print(f"成功安装并使用了指定版本{required_version}的Edge WebDriver。")
except Exception as e:
    print(f"安装指定版本的Edge WebDriver时出错: {e}")
Amovement commented 7 months ago

在三台电脑上都测试过了,在当前目录下不存在指定的driver的时候,manager会主动下载并继续后面的程序(当然前提是不出现前面提到的无法访问下载地址的情况)。

Amovement commented 7 months ago

前面说错了,这一块我看了一下源码,好像没有找到直接下载驱动的代码,之前是我臆想出来的。 问了一下ai。


Q: webdriver.Edge("./path") 当我执行这个命令,但是路径中不存在驱动,为什么也没有报错? A: 当你执行webdriver.Edge("./path")时,如果指定的驱动程序路径不存在,Selenium WebDriver并不会立即报错。这是因为webdriver.Edge构造函数实际上只是创建了一个Edge驱动对象,并没有立即尝试连接到驱动程序。

实际的连接和启动驱动程序是在后续的操作中进行的,例如通过get()方法打开网页或执行其他与浏览器交互的操作时。在这些操作之前,Selenium WebDriver并不会验证指定的驱动程序路径是否存在。

因此,即使在创建Edge驱动对象时指定了一个不存在的驱动程序路径,你不会立即收到错误。而是在尝试与驱动程序建立连接时,才会抛出WebDriverException或类似的错误,指示驱动程序无法找到或访问。


Q: 我没有安装对应的驱动程序为什么也可以执行webdriver.Edge A: 如果你没有安装对应的驱动程序,但仍然可以执行webdriver.Edge,这可能是因为你的系统中已经存在了一个与Microsoft Edge浏览器兼容的默认驱动程序。

从Selenium 4开始,它支持通过Edge浏览器的内置驱动程序直接进行操作,不需要单独安装和配置驱动程序。这意味着你可以直接使用webdriver.Edge来创建Edge浏览器的驱动对象,而不需要下载和指定外部驱动程序路径。

然而,这种行为可能因操作系统和Selenium版本而异。如果你在执行webdriver.Edge时遇到问题,建议你仍然按照常规步骤安装对应的驱动程序,以确保能够正常使用Selenium与Edge浏览器进行交互。

请注意,为了保持最佳兼容性和稳定性,建议始终使用与你所使用的浏览器版本相匹配的最新驱动程序。你可以访问Selenium和浏览器官方网站以获取最新版本的驱动程序和浏览器兼容性信息。

A5rZ commented 7 months ago

连接不上是不是代理没关?之前python pip就有这个问题

A5rZ commented 7 months ago

或者尝试关闭防火墙,和杀毒软件?