同一个程序开启多个浏览器

  1. from playwright.sync_api import sync_playwright
  2. # 全局变量(要注意,是整个环境全局变量,后续所有涉及playwright的浏览器创建都要基于改变量创建)
  3. playwright = sync_playwright().start()
  4. def get_context():
  5. browser = playwright.chromium.launch(
  6. executable_path="/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge",
  7. headless=False,
  8. args=["--disable-blink-features=AutomationControlled"],
  9. )
  10. context = browser.new_context(
  11. bypass_csp=True,
  12. viewport={"width": 1920, "height": 1080},
  13. )
  14. return context
  15. if __name__ == '__main__':
  16. c1 = get_context()
  17. c2 = get_context()
  18. p1 = c1.new_page()
  19. p1.goto('https://baidu.com')
  20. print(p1.title())
  21. p2 = c2.new_page()
  22. p2.goto('https://baidu.com')
  23. print(p2.title())
  24. c1.browser.close()
  25. c2.browser.close()

Django ORM 与 Playwright 一起使用

在没有经过设置的情况下,在django项目中使用playwright后,调用django orm会出现如下报错。
django.core.exceptions.SynchronousOnlyOperation: You cannot call this from an async context - use a thread or sync_to_async.
image.png
解决的办法是在setting.py文件中,设置DJANGO_ALLOW_ASYNC_UNSAFE参数

  1. # 在setting.py文件中加入,即可解决
  2. import os
  3. os.environ["DJANGO_ALLOW_ASYNC_UNSAFE"] = "true"