程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

Aardio调用Python Playwright,自动化webview2实时交互

hfteth 2024-12-23 09:22:15 技术文章 14 ℃

1. 引言

在前两章中介绍的aardio如何调用playwright和自动化webview2,但是有反馈说这样还不如直接用python写playwright然后打包,不用aardio。

为什么要用aardio来调用Python Playwright,原因有几个:

  1. 打包简单,一键发布,体积小
  2. aardio的webview2 api已经封装好,使用简单
  3. aardio写窗口界面非常快捷简单,漂亮美观。(这个在以前的章节有讲过)
  4. 可以方便地进行实时交互。(这个正是今天的主题)

2. 交互案例分析

效果图:

在实际应用中,通常需要将自动化操作呈现给用户看,让用户了解实时进度,并加入开始,结束按钮来进行互动(只是举例,如果用来采集数据还可以加列表将采集的数据放到列表上等)

1. 自动化操作进度实时输出到文本控件

print("打开网址",flush=True)


在python里,每次操作都可以用print来输出,参数2 flush=True用来强制输出缓冲区内容

而在aardio中可以使用下面的语句来进行捕获python输出的内容,并显示到文本控件中

py.logResponse(mainForm.richedit)


2. 结束

当点击开始运行时,实际是会多出一个python进程来运行python的库,所以在结束后

应该将进行结束

mainForm.plus2.oncommand = function(id,event){
    if !py return ;
    py.terminate()
    py = null 
}

完整代码:

import win.ui;
/*DSG{{*/
mainForm = win.form(text="playwright测试";right=1114;bottom=708;bgcolor=16777215)
mainForm.add(
custom={cls="custom";text="自定义控件";left=0;top=1;right=818;bottom=702;ah=1;aw=1;z=1};
plus={cls="plus";text="开始";left=846;top=18;right=935;bottom=62;font=LOGFONT(h=-16);notify=1;z=3};
plus2={cls="plus";text="结束";left=987;top=18;right=1076;bottom=62;font=LOGFONT(h=-16);notify=1;z=4};
richedit={cls="richedit";left=822;top=73;right=1112;bottom=705;color=16711680;edge=1;font=LOGFONT(h=-16);multiline=1;z=2}
)
/*}}*/

import win.ui.css;
import web.view2;

css = win.ui.css()
mainForm.plus.skin(css.primary)
mainForm.plus2.skin(css.noble)

wb = web.view2(mainForm.custom,,,0)

mainForm.show();

import string.template

html = `
from playwright.sync_api import Playwright, sync_playwright, expect


def run(playwright: Playwright) -> None:
    # 使用chromium.connect_over_cdp远程连接webview
    browser = playwright.chromium.connect_over_cdp("http://127.0.0.1:${port}")
    context = browser.contexts[0]
    page = context.pages[0]
    print("打开网址",flush=True)
  
    page.goto("https://www.baidu.com/")
    
    print("输入内容",flush=True)
    
    page.locator("#kw").click()
    page.locator("#kw").fill("附加webview测试")
    
    print("点击百度一下",flush=True)
    page.get_by_role("button", name="百度一下").click()

with sync_playwright() as playwright:
    run(playwright)
    
`
html = string.template(html).format(
    port = wb.remoteDebuggingPort;
)

import process.python;

process.python.version = "3.9.13";
process.python.win32 = true;



mainForm.plus.oncommand = function(id,event){
    if py return ; 
    mainForm.richedit.text = "" //清空原有文本
    py = process.python.exec(html);
    py.logResponse(mainForm.richedit)
}

mainForm.plus2.oncommand = function(id,event){
    if !py return ;
    py.terminate()
    py = null 
}

return win.loopMessage();


库下载

web.view2库在本人的扩展库上下载:

https://mp.weixin.qq.com/s/GxxAKtoCZSu6xUO_Q8WS1Q


Aardio培训资讯

如果你想进一步深入学习aardio以及其他有关应用程序开发的知识,我建议你考虑参加我们的aardio培训班。

我们的培训班旨在帮助新手开发者快速入门并掌握aardio的各种功能和技术。你将学习从基础知识到高级技巧的全方位内容,并有机会与其他开发者进行交流和分享经验。

我们的培训班不仅提供在线学习资源,还会有专业的导师进行指导和答疑。无论你是想要在个人项目中应用这些技术,还是希望在职业发展中获得竞争优势,我们的培训班将为你提供所需的支持和指导。

培训内容及福利介绍:https://mp.weixin.qq.com/s/cr47qhp_Cpz0p57lbbPwug

课程优势:

1.aardio零基础到精通视频,只要会打字就可以!

2.疑问解答,复杂的可以远程解决!

3.实用扩展库和例子,学习资源多!

4.完整项目开发过程,分析每一步开发遇到的问题!

5.完整的系统教程,知识全面覆盖!

如果你对aardio培训班感兴趣,可以通过以下联系方式获得更多信息,备注“报名”。我们期待能与你一起开启这个令人兴奋的学习之旅!

QQ:45561810

微信:mkoijnn33

Tags:

最近发表
标签列表