当前位置: 首页 > 科技观察

微软最强大的Python自动化工具开源!一行代码都不需要写

时间:2023-03-22 10:40:55 科技观察

一、前言近日,微软开源了一个非常强大的Python自动化依赖库:playwright-python,支持主流浏览器,包括:Chrome、Firefox、Safari、MicrosoftEdge等,并支持Runninginheadless或headed模式,playwright-python提供同步和异步API,可与Pytest测试框架结合使用,支持浏览器端自动化脚本录制。项目地址:https://github.com/microsoft/playwright-python2。在实战之前,我们只需要2个步骤。第一步、安装playwright-python依赖库#安装依赖库pip3installplaywright第二步、安装主流浏览器这样Chromeium、Firefox、Webkit浏览器驱动都会下载到本地#安装浏览器驱动python-mplaywrightinstall3。实战3-1录制脚本我们先来看一下录制脚本的命令说明。最强Python自动化工具开源!不用写一行代码"inline="0"class="syl-page-img">wherepython-mplaywrightcodegen录制脚本--help帮助文档-o生成自动化脚本的目录--target脚本语言,包括JS和Python,对应的值为:python和javascript-b指定浏览器驱动例如#我们打开Chrome浏览器,通过以下命令开始录制脚本#指定生成的语言为:Python(默认Python,可选)#保存的文件名:1.py(可选)#浏览器驱动:webkit(默认webkit,可选)#最后按照要打开的目标网站(默认只打开浏览器,可选)python-mplaywrightcodegen--targetpython-o1.py-bwebkithttps://www.baidu.com接下来在浏览器中模拟一个搜索操作,然后关闭浏览器。最强Python自动化工具开源!无需写一行代码”内联="0"class="syl-page-img">最后,自动化脚本将是自动生成并保存到文件fromplaywrightimportsync_playwrightdefrun(playwright):browser=playwright.webkit.launch(headless=False)context=browser.newContext#Opennewpagepage=context.newPage#Gotohttps://www.baidu.com/page.goto("https://www.baidu.com/")#Fillinput[name="wd"]page.fill("input[name="wd"]","AirPython")#PressEnter#withpage.expect_navigation(url="https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=AirPython&fenlei=256&rsv_pq=a1739d870005eec3&rsv_t=e640wwS33ra1Koivxvy1WyTxyknRwnllWiw4JBqIYd/KUN/WKpWLtL2b2+0&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug3=21&rsv_sug1=18&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&inputT=6199&rsv_sug4=6199"):withpage.expect_navigation:page.press("input[name="wd"]","Enter")#Closepagepage.close#--------------------context.closebrowser.closewithsync_playwrightasplaywright:run(剧作家)3-2synchronous同步的关键字是:sync_playwright比如我们使用三个浏览器内核依次打开浏览器,然后百度,然后截图搜索界面,最后关闭浏览器fromtimeimportsleepfromplaywrightimportsync_playwright#注意:默认为headless模式withsync_playwrightasp:#分别对应三个浏览器驱动forbrowser_typein[p.chromium,p.firefox,p.webkit]:#指定为headless模式,方便查看browser=browser_type.launch(headless=False)page=browser.newPagepage.goto(http://baidu.com)#执行搜索操作page.fill("input[name="wd"]","AirPython")withpage.expect_navigation:page.press("input[name="wd"]","Enter")#等待页面完全加载page.waitForSelector("text=百度热搜榜")#screenshotpage.screenshot(path=fexample-{browser_type.name}.png)#摇5ssleep(5)#关闭浏览器browser.close需要指出的是playwright-python内置的API基本涵盖了常见的自动化操作3-3asynchronous和asynchronous关键字是:async_playwright结合asyncio,我们同时执行上面的操作importasynciofromplaywrightimportasync_playwright#异步执行asyncdefmain:asyncwithasync_playwrightasp:forbrowser_typein[p.chromium,p.firefox,p.webkit]:#指定为headed模式,方便查看browser=awaitbrowser_type.launch(headless=False)page=awaitbrowser.newPageawa.goto(http:///baidu.com)#执行搜索操作awaitpage.fill("input[name="wd"]","AirPython")awaitpage.press("input[name="wd"]","Enter")#等待页面完全加载awaitpage.waitForSelector("text=百度热搜榜")#screenshotawaitpage.screenshot(path=fexample-{browser_type.name}.png)awaitbrowser.closeasyncio.get_event_loop.run_until_complete(main)4.最后,其实Playwright是一个支持Python、Java、JS等的跨语言自动化框架。相对于传统的自动化,Playwright就框架Selenium而言,在Context和API使用方面更加简洁和强大,更多细节功能可以通过阅读原文解锁。