我在main.py文件中有以下代码:
from AD001 import PasswordTest
for row in your_list:
print(row[0], row[1])
u = row[0]
p = row[1]
PasswordTest.test_login(u, p)
并且此代码调用其他文件:
def test_login(self, u, p):
self.driver.implicitly_wait(10)
print("Login to AG")
但是每次都会出现错误:
> File "C:/selenium/AISG/IA/Users_role/main_reader.py", line 18, in
> <module>
> PasswordTest.test_login(u, p) TypeError: test_login() missing 1 required positional argument: 'p'
我不明白为什么?
答案 0 :(得分:3)
您必须在main.py中创建PasswordTest
类的实例
from AD001 import PasswordTest
p_test = PasswordTest()
for row in your_list:
print(row[0], row[1])
u = row[0]
p = row[1]
p_test.test_login(u, p)
答案 1 :(得分:0)
您要调用的方法是一个实例方法,这意味着它需要一个类实例作为第一个参数。您直接在类上调用它,因此没有实例传递给它。有两种解决方案:
-只需调用PasswordTest().test_login(u, p)
,实例化该类,或
-通过适当的装饰器将test_login
设为类方法,如下所示:
@class_method
def test_login(cls, u, p):
cls.driver.implicitly_wait(10)
print("Login to AG")
但是您需要将driver
字段更改为类属性。