window系统:python3 + auto-py-to-exe 打包playwright为exe,内含独立浏览器

auto-py-to-exe的使用参考一下链接:
链接: python—auto-py-to-exe—.py文件打包成.exe文件最全最详细(用不同的类别做教程)

1、使用auto-py-to-exe打包playwright成exe,运行一直报错:FileNotFoundError: [WinError 2] 系统找不到指定的文件。

Task exception was never retrieved
future: <Task finished name='Task-2' coro=<Connection.run() done, defined at playwright\_impl\_connection.py:258> exception=FileNotFoundError(2, '系统找不到指定的文件。', None, 2, None)>
Traceback (most recent call last):
  File "playwright\_impl\_connection.py", line 265, in run
  File "playwright\_impl\_transport.py", line 127, in connect
  File "playwright\_impl\_transport.py", line 116, in connect
  File "asyncio\subprocess.py", line 218, in create_subprocess_exec
  File "asyncio\base_events.py", line 1680, in subprocess_exec
  File "asyncio\windows_events.py", line 394, in _make_subprocess_transport
  File "asyncio\base_subprocess.py", line 36, in __init__
  File "asyncio\windows_events.py", line 910, in _start
  File "asyncio\windows_utils.py", line 153, in __init__
  File "subprocess.py", line 1022, in __init__
  File "subprocess.py", line 1491, in _execute_child
FileNotFoundError: [WinError 2] 系统找不到指定的文件。

这个问题在使用auto-py-to-exe打包后,没有把playwright文件夹打包进去,不知道为什么,
我的包安装地址是:C:\Python311\Lib\site-packages\playwright
在 附加文件 -》 添加目录 。里面选择自己playwright安装的文件夹,就可以正常运行
在这里插入图片描述

2、运行报错:playwright._impl._api_types.Error: Executable doesn’t exist at ------ Please run the following command to download new browsers:playwright install

Traceback (most recent call last):
  File "demo copy 2.py", line 27, in <module>
  File "asyncio\runners.py", line 190, in run
  File "asyncio\runners.py", line 118, in run
  File "asyncio\base_events.py", line 650, in run_until_complete
  File "demo copy 2.py", line 26, in main
  File "demo copy 2.py", line 13, in run
  File "playwright\async_api\_generated.py", line 14476, in launch
  File "playwright\_impl\_browser_type.py", line 93, in launch
  File "playwright\_impl\_connection.py", line 61, in send
  File "playwright\_impl\_connection.py", line 461, in wrap_api_call
  File "playwright\_impl\_connection.py", line 96, in inner_send
playwright._impl._api_types.Error: Executable doesn't exist at C:\Users\86152\AppData\Local\Temp\_MEI244722\playwright\driver\package\.local-browsers\chromium-1060\chrome-win\chrome.exe
╔════════════════════════════════════════════════════════════╗
║ Looks like Playwright was just installed or updated.       ║
║ Please run the following command to download new browsers: ║
║                                                            ║
║     playwright install                                     ║
║                                                            ║
║ <3 Playwright Team                                         ║
╚════════════════════════════════════════════════════════════╝
[12932] Failed to execute script 'demo copy 2' due to unhandled exception!

这个提示是告知我们没有找到浏览器,因为代码在本地测试通过的,也安装过浏览器,运行没问题,但是打包exe后,系统会把路径换成工作路径:C:\Users\86152\AppData\Local\Temp_MEI244722,和本地运行路径不同,结果导致找不到浏览器,

解决办法:把浏览器直接打包进exe中

系统是根据这个路径来寻找的:

C:\Users\86152\AppData\Local\Temp\_MEI244722\playwright\driver\package\.local-browsers\chromium-1060\chrome-win\chrome.exe

找到之前下载浏览器的位置:
我的是下载到:C:\Users\86152\AppData\Local\ms-playwright 文件夹下的
在这里插入图片描述

直接把浏览器文件夹复制到C:\Python311\Lib\site-packages\playwright\driver\package\.local-browsers\文件夹里面,如果package下没有.local-browsers,新建一个复制进去

在这里插入图片描述

和之前一样添加playwright文件夹打包即可

我的包安装地址是:C:\Python311\Lib\site-packages\playwright

在这里插入图片描述

重新打包即可正常运行

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Python Playwright是一个能够控制浏览器进行自动化测试和操作的工具。其中,-remote-debugging-port是Playwright库提供的一个选项,用于指定远程调试的端口号。 使用-remote-debugging-port选项,可以让Playwright通过特定的端口与浏览器建立调试和通信的连接。这样一来,我们就可以实时地监控浏览器执行的情况,以便进行调试或将其集成到其他自动化工具中。 举个例子,假设我们想要在Playwright中使用Chrome进行自动化操作,并在开始之前设置远程调试端口号为9222。我们可以这样编写代码: ```python from playwright.sync_api import sync_playwright def main(): with sync_playwright() as playwright: browser_type = playwright.chromium browser = browser_type.launch(remote_debugging_port=9222) page = browser.new_page() # 在这里可以进行各种自动化操作 # ... browser.close() if __name__ == '__main__': main() ``` 在上述代码中,我们使用了playwright.sync_api中的sync_playwright函数来创建一个Playwright对象。然后,我们选择了要使用的浏览器,这里是Chrome。接着,我们通过调用browser_type的launch方法来启动浏览器,并使用remote_debugging_port参数指定了远程调试的端口号9222。 这样,我们就成功地在Playwright中设置了远程调试端口号。接下来,我们可以根据需要在此基础上进行各种自动化测试和操作,并通过与浏览器建立的调试连接实时监控其执行情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值