:我正在尝试创建一个函数装饰器,它将一个剧作家Page(playwright.sync_api._generated.Page)对象)传递给包装好的函数。
发出:对于大多数函数调用,我将能够返回函数调用返回的值。但是,由于剧作家需要browser.close()调用,所以我不能简单地返回Page对象。我不确定问题是在(1)我定义的函数装饰器中,还是(2)函数装饰符的用法中。
我试着在pytest固定装置之后给我的装潢师做模特。使用pytest,我会做这样的事情:
@pytest.fixture(scope="module")
def playwright_page():
with sync_playwright() as play:
browser = play.chromium.launch()
page = browser.new_page()
yield page
browser.close()然后
def open_google(playwright_page):
playwright_page.goto("https://google.com")函数译码器
>>> from playwright.sync_api import sync_playwright
>>> def playwright_page(func):
def wrapper(*args, **kwargs):
with sync_playwright() as play:
browser = play.chromium.launch()
page = browser.new_page()
yield page
browser.close()
return wrapper尝试1
>>> @playwright_page
def open_google():
page.goto("https://google.com")
>>> open_google()
<generator object playwright_page.<locals>.wrapper at 0x0000015C5F6CBC10>尝试2
>>> @playwright_page
def open_google():
page = next(page)
page.goto("https://google.com")
>>> open_google()
<generator object playwright_page.<locals>.wrapper at 0x0000015C5FDB7F90>发布于 2021-04-19 22:45:39
我应该调用Page对象并传递Page对象,而不是试图生成pytest对象,比如pytest的对象。
>>> from playwright.sync_api import sync_playwright
>>> def playwright_page(func):
def wrapper():
with sync_playwright() as play:
browser = play.chromium.launch()
page = browser.new_page()
results = func(page)
browser.close()
return results
return wrapper
>>> @playwright_page
def open_google(page):
page.goto("https://google.com")https://stackoverflow.com/questions/67165764
复制相似问题