gpt4 book ai didi

python - 使用try/except然后在类中抛出一个方法

转载 作者:行者123 更新时间:2023-12-03 07:56:15 25 4
gpt4 key购买 nike

我下面有这段代码,我想通过该类内部的click_on_element方法捕获类WebInterface中的capture_page_screenshot方法的异常。我已经使用了装饰器catch_exception,但是没有用。
请告诉我如何完成此操作!
第一个:回溯为:self未定义。
在Timus的帮助下修复代码之后:我得到了第二个回溯:在...期间。
我的意思是当我raise Exception enter image description here时,它始终显示回溯消息

def catch_exception(f):
@functools.wraps(f)
def func(*args, **kwargs):
try:
return f(*args, **kwargs)
except:
WebInterface.capture_page_screenshot(self)
raise Exception(traceback._context_message)
return func

class WebInterface(object):

implicitly_timeout = 15
page_load_timeout = 30
set_driver_path = False

def __init__(self, name = None):
if not self.set_driver_path:
env_path = env.get_env_var("PATH")
env_path = ";".join([env_path, Utils.client_driver_path])
env.set_env_var("PATH", env_path)
self.set_driver_path = True
self.screenshot_dir = None
self.driver = SeleniumLibrary(self.page_load_timeout, self.implicitly_timeout,"")


def capture_page_screenshot(self, file_name = None):
file_name = str(file_name)
if not self.screenshot_dir:
self.screenshot_dir = os.path.join(Utils.get_output_dir(), "page_screenshot")
Utils.create_directory_if_not_exist(self.screenshot_dir)
_output = self.screenshot_dir
if not file_name:
file_name = self.driver.__hash__()
_output = os.path.join(_output, file_name)
if not _output.endswith(".png"):
_output += ".png"
image_path = self.driver.capture_page_screenshot(_output)
Utils.add_file_to_report(image_path, file_name)
return image_path


@catch_exception
def click_on_element(self, locator):
_locator = Utils.get_values_if_be_a_keyword(locator)
self.driver.find_element(_locator).click()

最佳答案

我的猜测:在WebInterface.capture_page_screenshot(self)的定义中,用args[0].capture_page_screenshot()替换catch_exception
装饰器定义中的函数对self一无所知:它未在类定义内定义,并且为其提供的参数仅为args(列表)和kwargs(字典):

def func(*args, **kwargs):
...
当您在类定义中使用装饰器时, args( args[0])的第一个元素是 self,因为它的第一个参数指定给 click_on_element

关于python - 使用try/except然后在类中抛出一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64802708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com