当前位置: 首页 > news >正文

【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网站提供的练习案例

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 同态加密和SEAL库的介绍(六)BGV 方案
  • Android开发 java回调
  • 学习日志8.8--防火墙精细化策略管控
  • 【算法模板】基础:反悔贪心
  • NAT、服务代理、内网穿透
  • WPF篇(3)- WrapPanel控件(瀑布流布局)+DockPanel控件(停靠布局)
  • 全新博客X主题/简约WordPress主题模板/主题巴巴/免授权版源码+自适应设计
  • Vue+Element Plus后台管理主界面搭建实现
  • MySQL:基本概念,DDL语句,数据库约束,索引视图
  • 低代码开发
  • 【MySQL】数据基本的增删改查操作
  • 聊聊使用场景法进行性能测试
  • 科技赋能生活——便携气象站
  • 假如有一个嵌套集合,怎么通过stream流将集合放到一个集合之中?
  • MySQL数据库基础:约束
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • js操作时间(持续更新)
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Vue实战(四)登录/注册页的实现
  • 对象管理器(defineProperty)学习笔记
  • 服务器之间,相同帐号,实现免密钥登录
  • 回顾2016
  • 前端临床手札——文件上传
  • 手机端车牌号码键盘的vue组件
  • 跳前端坑前,先看看这个!!
  • 硬币翻转问题,区间操作
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 自动记录MySQL慢查询快照脚本
  • Hibernate主键生成策略及选择
  • # Java NIO(一)FileChannel
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #stm32整理(一)flash读写
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (leetcode学习)236. 二叉树的最近公共祖先
  • (附源码)c#+winform实现远程开机(广域网可用)
  • (附源码)ssm码农论坛 毕业设计 231126
  • (算法二)滑动窗口
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (转)nsfocus-绿盟科技笔试题目
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • (最新)华为 2024 届秋招-硬件技术工程师-单板硬件开发—机试题—(共12套)(每套四十题)
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .Family_物联网
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .NET 给NuGet包添加Readme
  • .Net 中Partitioner static与dynamic的性能对比
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .NET技术成长路线架构图
  • @Autowired @Resource @Qualifier的区别
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
  • [20180224]expdp query 写法问题.txt
  • [Android] Android ActivityManager