You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Playwright跨文件导入代码报错:module 'playwright' has no attribute 'chromium'

解决Playwright + APScheduler 触发任务时的AttributeError问题

错误信息

Job "runF5 (trigger: interval[1 day, 0:00:00], next run at: 2023-01-31 00:24:00 PKT)" raised an exception
Traceback (most recent call last):
  File "E:\pyton\Lib\site-packages\apscheduler\executors\base.py", line 125, in run_job
    retval = job.func(*job.args, **job.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "e:\completed zameen project\combined.py", line 11, in runF5
    m5.runF5(playwright)
  File "e:\completed zameen project\m5.py", line 131, in runF5
    browser = playwright.chromium.launch(headless=False, slow_mo=600)
              ^^^^^^^^^^^^^^^^^^^
AttributeError: module 'playwright' has no attribute 'chromium'

问题原因

文件2中直接传递了playwright模块对象给m5.runF5(),但文件1的runF5函数需要的是**Playwright类的实例**,而非模块本身。chromium是Playwright实例的属性,模块级别的playwright并没有这个属性,因此触发报错。

解决方案

方案1:在文件2中正确获取Playwright实例传递

修改文件2代码,通过sync_playwright()获取Playwright实例后再传递:

from playwright.sync_api import sync_playwright
import m5
from apscheduler.schedulers.background import BackgroundScheduler

def runF5():
    with sync_playwright() as playwright:
        m5.runF5(playwright)

scheduler = BackgroundScheduler()
scheduler.add_job(runF5, 'interval', days=1, start_date='2022-01-01 03:31:00', timezone='Asia/Karachi')
scheduler.start()

while True:
    pass

方案2:让文件1的函数自行处理Playwright实例(更简洁)

修改文件1的runF5函数,内部直接启动Playwright,无需外部传参:

from playwright.sync_api import sync_playwright, expect
import random
import time
import sys
import pyautogui

def runF5() -> None:
    with sync_playwright() as playwright:
        browser = playwright.chromium.launch(headless=False, slow_mo=600)
        context = browser.new_context()
        page = browser.new_page()
        page.goto('https://www.google.com/', timeout=0)
        # 后续操作完成后可主动关闭浏览器
        browser.close()

对应文件2代码简化为:

import m5
from apscheduler.schedulers.background import BackgroundScheduler

def runF5():
    m5.runF5()

scheduler = BackgroundScheduler()
scheduler.add_job(runF5, 'interval', days=1, start_date='2022-01-01 03:31:00', timezone='Asia/Karachi')
scheduler.start()

while True:
    pass

关键说明

  • sync_playwright()是Playwright提供的同步API入口,上下文管理器会自动处理Playwright的启动与关闭。
  • 确保已安装对应浏览器驱动,可执行命令 playwright install chromium 完成安装。

内容的提问来源于stack exchange,提问作者noob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 21:41:10