Appium Python 装饰器使用报错求助

小阿飞 · December 28, 2017 · Last by edsion replied at December 28, 2017 · 1222 hits
class take_screen_shot():  #这个类将在下面作为装饰器使用
def __init__(self, func):
self.func = func
self.name = func.__name__ + ' (error).png' #拼接截图文件名

def __call__(self, *args): #对每次调用的函数都做截图操作
try:
self.func(self, *args)
except Exception as msg:
self.driver.get_screenshot_as_file('C:\\Users\\zhengtao\\Desktop\\pic\\'+self.name)
raise msg

我使用@take_screen_shot调用装饰器的时候,总是报错
AttributeError: 'take_screen_shot' object has no attribute 'driver'

这是为何,不解!

共收到 8 条回复 时间 点赞
Author only

self.driver.get_screenshot_as_file

你定义的 take screenshot 这个类里没有 driver 属性

Jerry li 回复

哥,你只是翻译了一下

小阿飞 回复

你要调用 self.driver , 就首先得定义有 driver 这个属性啊
比如上面的 self.name、 self.func 都已经定义好了,就不会报错。

解决:
方法1 : 加上 self.driver 的定义
方法2: 从其他类把 driver 拿过来用

应该还会有其他问题 建议看看这个

Jerry li 回复
global driver
self.driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)

只是截取了我代码的部分,那些都是定义过的

小阿飞 回复

你现在是在类内部调用 self ,是不会找到上面的定义吧?

小阿飞 回复

你这个有点搞了吧
声明driver是全局变量,然后用的是self.driver。。。。

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up