python – Selenium TypeError:__ init __()需要2个位置参数但是3个被赋予

参见英文答案 > Selenium – visibility_of_element_located: __init__() takes exactly 2 arguments (3 given)                                    1个

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import webdriverwait
from selenium.webdriver.support import expected_conditions
driver = webdriver.Firefox()
driver.get("http://somelink.com/")


webdriverwait(driver,10).until(expected_conditions.invisibility_of_element_located(By.XPATH,"//input[@id='message']"))
# Gives me an error:
TypeError: __init__() takes 2 positional arguments but 3 were given

# Simply:
expected_conditions.invisibility_of_element_located(By.XPATH,"//input[@id='message']"))
# Gives me the same error.
TypeError: __init__() takes 2 positional arguments but 3 were given

无论我使用By.XPATH,By.ID还是其他任何内容,错误都会重复出现.

此外,find_element工作得很好:

el = driver.find_element(By.XPATH,"//input[@id='message']")
print(el) # returns:
[<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="03cfc338-f668-4fcd-b312-8e4a1cfd9f24",element="c7f76445-08b3-4a4c-9d04-90263a1ef80e")>]

建议表示赞赏.

编辑:

By.XPATH周围的额外括号(),评论中建议的“//输入[@ id =’message’]”解决了问题.

解决方法

改变这个

webdriverwait(driver,10).until(expected_conditions.invisibility_of_element_locate‌​d((By.XPATH,"//input[@id='message']")))

添加了额外的(),希望这应该工作.

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...