TypeError: __init__() takes 2 positional arguments but 3 were given

近日在使用selenium+python3.6爬取一个网站时遇到这个问题:

Traceback (most recent call last):
  File "D:/pythoncode/spider/spiderforQA.py", line 17, in <module>
    wait=WebDriverWait(driver,10).until(EC.presence_of_element_located(By.XPATH,'//*[@id="heading0"]/a'))
TypeError: __init__() takes 2 positional arguments but 3 were given

该问题的原因是EC.presence_of_element_located()方法传参的问题,往该方法传参数时需要将参数用“()”括起来使其作为一个整体,而不是单独传入。如下所示:
将:WebDriverWait(driver,10).until(EC.presence_of_element_located(By.XPATH,'//*[@id="heading0"]/a'))
修改为:WebDriverWait(driver,10).until(EC.presence_of_element_located((By.XPATH,'//*[@id="heading0"]/a')))

就OK!

参考:https://stackoverflow.com/questions/39957316/typeerror-init-takes-2-positional-arguments-but-3-were-given

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-27 10:52
点赞 评论 收藏
分享
头像
11-21 11:39
四川大学 Java
是红鸢啊:忘了还没结束,还有字节的5k 违约金
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务