Selenium TypeError:__init __()接受2个位置参数,但给出了3个

Ibe*_*ber 5 python selenium webdriver

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
Run Code Online (Sandbox Code Playgroud)

...

# 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
Run Code Online (Sandbox Code Playgroud)

无论我使用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")>]
Run Code Online (Sandbox Code Playgroud)

建议表示赞赏。

编辑:

By.XPATH, "//input[@id='message']"注释中建议的多余的括号()解决了该问题。

the*_*guy 12

改变这个

WebDriverWait(driver, 10).until(expected_conditions.invisibility_of_element_locate??d((By.XPATH, "//input[@id='message']")))
Run Code Online (Sandbox Code Playgroud)

我添加了额外的 () ,希望这应该有效。

  • 为什么这样有效? (2认同)
  • @psitae 期望一个元组作为参数,但没有额外的括号 `By.XPATH, "//input[@id='message']"` 只是两个单独的参数。 (2认同)