这句话的意思其实很直白,playwright已经被关闭。
1请检查你的程序逻辑是不是提前进行了close操作
page.close()
⭐️「更可能的情况」2.检查是否错误的把sync_playwright()语句写到了函数里或者类里
也就是这一句
with sync_playwright() as p:
请看示例
def a():
with sync_playwright() as playwright:
browser = playwright.chromium.launch(headless=False)
page = browser.new_page()
return page
if __name__ == '__main__':
#main()
a().goto("https://baidu.com")
输出报错信息
raise Error(“Event loop is closed! Is Playwright already stopped?”)
playwright._impl._errors.Error: Event loop is closed! Is Playwright already stopped?
解决方案——把with语句放到main里,产生的playwright对象作为参数传入函数
def a(indicator):
browser = indicator.chromium.launch(headless=False)
page = browser.new_page()
return page
if __name__ == '__main__':
with sync_playwright() as playwright:
a(playwright).goto("https://baidu.com")
后记:
其实很好理解。当函数退出的时候,playwright对象也就被回收
这里也可以不用with,用实例化sync_playwright()的方式配合close语句。(回忆一下with open)具体可以自行查阅资料