【Python】解决“TypeError: __init__() got an unexpected keyword argument ‘XXX‘”的方法

我一直使用selenium,通常构建dirver 的时候都会写:

driver = webdriver.Chrome(options=option,
executable_path=chromedriver_path)

executable_path是用于指定 ChromeDriver 的可执行文件路径。但是今天执行的时候,却忽然报出关于executable_path的问题:

在这里插入图片描述

那么,我们在遇到

“TypeError: init() got an unexpected keyword argument ‘XXX’”

这类型问题的时候,应该怎么做呢?

思路:
我打开底层Chrome的包,【ctrl】+点击黄色横线的位置就能打开了。
在这里插入图片描述

打开Chrome的包,我发现搜索目标参数【executable_path】的时候,发现找不到这个参数。而细看参数列表的时候,查看__init__ 的方法,确认确实是没有【executable_path】这个参数了。说明Chrome这个包的版本进行了更新。这时候需要看看现在的selenium的说明文档了。
在这里插入图片描述
不过我点开了selenium项目官网看,只有测试案例,没有其他的解释。在这里插入图片描述

终于,我在一堆说明文档中找到了最终的解释:
在这里插入图片描述
从4.6版本开始,每个Selenium版本都附带创建了Selenium Manager,它的主要功能是自动驱动程序管理。

当Selenium所需的驱动程序不可用时,Selenium Manager会自动【发现、下载和缓存】这些驱动程序。

每个Selenium版本都附带了Selenium Manager二进制文件。这样,每种Selenium绑定语言都会调用Selenium Manager来执行自动驱动程序和浏览器管理。

这意味着不需要我们手动下载chromedriver驱动,以及无需担心 驱动程序 (113)和Chrome自动更新版本(115)后,两者之间的不兼容的问题了!!!

这也不用担心下面不知道何时会出现的警告了:

“session not created: This version of ChromeDriver only supports
Chrome version 113”.

(以上截图只是一部分,如果需要进一步了解,可以跳转到最后的selenium manager 的说明)

如果以后遇到__init__() got an unexpected keyword argument 'XXX’的问题,解决这类问题办法总结:

第一步, 进入所需要用的库/包里,检查参数列表。看看我们用到的参数是否存在。如果不存在,就不需要加这个参数了,尝试不写这个参数是否可以继续运行。

第二步,查看说明文档:检查我们正在使用的类或函数的官方文档,除了查找你使用的参数,还要检查我们用的包,是否适用于当前的库或框架版本。

第三步,更新代码:如果你的代码基于旧版本的库或框架编写,而该库或框架已经更新,那么就需要更新你的代码了。

一些相关的网站参考:selenium manager 的说明
selenium 项目官网网站
selenium网站提供的练习案例

在这里插入图片描述

  • 11
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,出现了TypeError: __init__() got an unexpected keyword argument 'date'和TypeError: __init__() got an unexpected keyword argument ‘encoding’的问题。这两个错误通常是由于使用了不支持的参数导致的。 对于第一个错误,TypeError: __init__() got an unexpected keyword argument 'date',这个错误通常发生在调用某个函数或方法时传递了不支持的参数。要解决这个问题,你需要检查你的代码,确保你传递的参数是正确的,并且与函数或方法的定义相匹配。 对于第二个错误,TypeError: __init__() got an unexpected keyword argument ‘encoding’,这个错误通常发生在使用json模块读取json文件时传递了不支持的参数。要解决这个问题,你需要检查你的代码,确保你传递的参数是正确的,并且与json模块的函数或方法的定义相匹配。 以下是两个示例来演示如何解决这两个错误: 1. 解决TypeError: __init__() got an unexpected keyword argument 'date'错误的示例: ```python class Person: def __init__(self, name): self.name = name person = Person(name='John', date='2021-01-01') # 错误的调用,传递了不支持的参数'date' ``` 在上面的示例中,我们在实例化Person类时传递了一个不支持的参数'date',导致了TypeError: __init__() got an unexpected keyword argument 'date'错误。要解决这个错误,我们需要检查代码并删除不支持的参数'date'。 2. 解决TypeError: __init__() got an unexpected keyword argument ‘encoding’错误的示例: ```python import json with open('data.json', 'r', encoding='utf-8') as file: # 错误的调用,传递了不支持的参数'encoding' data = json.load(file) ``` 在上面的示例中,我们在使用json模块读取json文件时传递了一个不支持的参数'encoding',导致了TypeError: __init__() got an unexpected keyword argument ‘encoding’错误。要解决这个错误,我们需要检查代码并删除不支持的参数'encoding'。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值