ysgeek 发表于 2019-5-23 14:03:11

定义类与方法执行报错

定义类与方法,执行时报“TypeError: test_wxTicket() missing 1 required positional argument: 'driver'”但不定义类和方法时,执行是OK的http://www.atstudy.com/files/course/2019/05-15/163019b1c9a1857299.png

在学课程佛系玩转APP自动化测试企业级任务http://www.atstudy.com/course/1609

学掌门网校 发表于 2019-5-23 14:28:47

在面向对象中同一个类不同方法要公用同一个参数的话,在参数定义的前面都要加self。例如:

class spider_Vbugtags:
    def __init__(self):
      a=10
    def test_case1(self):
      print(a)

这个代码就是错误的,要么就是定义成self.a,要么就是传参数a到test_case1方法中,如下:

解决方法1:

class spider_Vbugtags:
    def __init__(self):
      self.a=10
    def test_case1(self):
      print(self.a)

解决方法2:

class spider_Vbugtags:
    def __init__(self):
      a=10
    def test_case1(self,a):
      print(a)
if __name__=='__main__':
    spobj=spider_Vbugtags()
    spobj.test_case1(10)

上传的代码文件中,关于属性的定义不能在main调用的时候写,这个是不正确的。要在类方法中写,在初始化方法中

driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)

改为self.driver=....

后面的方法中所有使用driver都改为self.driver

如果你要使用传参的方式,那就需要把init方法中的driver对象当成返回值返回,然后在调用其他方法时才能传入

个人建议你先用self.driver,后续可以试着用传参的方法

页: [1]
查看完整版本: 定义类与方法执行报错