TypeError:__init __()需要2个位置参数,但有3个被给出
问题描述:
我遇到了问题。程序必须获得IP地址frome txt文件,并为每个ip发送。检查日志是否合适。 我不知道为什么在这个简单的代码,我有一个问题。TypeError:__init __()需要2个位置参数,但有3个被给出
from termcolor import colored
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
myfile = [p.rstrip() for p in open('test.txt')]
for ip in myfile:
driver = webdriver.Chrome('./lib/chromedriver.exe')
driver.get("http://admin:[email protected]" + ip)
try:
element = WebDriverWait(driver, 20).until(
EC.presence_of_element_located(By.XPATH, ".//*/tbody/tr/td/table/tbody/tr[2]/td[2]")
)
except TimeoutException:
print(colored(ip + " except timeout error", "red"))
else:
print(colored(ip + " is OK", "green"))
finally:
driver.quit()
错误:
Traceback (most recent call last):
File "E:/GS/Py/wifiproject/dwl3200.py", line 21, in <module>
EC.presence_of_element_located(By.XPATH, ".//*/tbody/tr/td/table/tbody/tr[2]/td[2]")
TypeError: __init__() takes 2 positional arguments but 3 were given
答
尝试使用尽可能
EC.presence_of_element_located((By.XPATH, ".//*/tbody/tr/td/table/tbody/tr[2]/td[2]")))
你应该提供By.locator
和实际的定位表达的参数元组而不是作为两个单独的参数