【Python】selenium遇到ActionChains.move_to_element() takes 2 positional arguments but 4 were given报错

刚开始学的时候,用火绒的selenium插件录制了一个操作,导出为了python文件;

使用如下的命令运行这个文件(如果没有pytest用pip安装一下就行)

pip install pytest
pip install selenium

用如下命令执行导出的文件

pytest test_test01.py

会得到这个报错

      actions = ActionChains(self.driver)
>     actions.move_to_element(element, 0, 0).perform()
E     TypeError: ActionChains.move_to_element() takes 2 positional arguments but 4 were given

test_test1.py:42: TypeError

可我压根没有修改过导出的文件,这个报错是怎么来的呢?

目测是高低版本的python的selenium包中,报错的ActionChains.move_to_element()这个函数的传参被修改过;而插件生成的代码中,上方的这个就是正确的传参,下方的这个带0,0的传参是错误的

    # 3 | mouseOver | css=.row:nth-child(5) > .col-sm-3:nth-child(3) > .xe-widget | 
    element = self.driver.find_element(By.CSS_SELECTOR, ".row:nth-child(5) > .col-sm-3:nth-child(3) > .xe-widget")
    actions = ActionChains(self.driver)
    actions.move_to_element(element).perform()  # 正确
    # 4 | mouseOut | css=.row:nth-child(5) > .col-sm-3:nth-child(3) > .xe-widget | 
    element = self.driver.find_element(By.CSS_SELECTOR, "body")
    actions = ActionChains(self.driver)
    actions.move_to_element(element, 0, 0).perform() # 错误

image-20230815130034250

可以查看函数定义,只接受一个参数

image-20230815130102297

把这里的两个0,0删除掉就行了,运行的结果和我录制的效果相同,没有问题!

image-20230815130134022

顺带附上本次debug的版本号

python             3.10.5
pytest             7.4.0
selenium           4.11.2
火狐浏览器版本 116.0.2(64位)
火狐浏览器Selenium IDE插件版本 3.17.4

如果帮到了你,还请评论支持我一下,谢谢!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕雪华年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值