python能不能自动写代码_微软最强 Python 自动化工具开源了!不用写一行代码

1. 前言

最近,微软开源了一款非常强大的 Python 自动化依赖库:playwright-python,它支持主流的浏览器,包含:Chrome、Firefox、Safari、Microsoft Edge 等,同时支持以无头模式、有头模式运行,playwright-python 提供了同步、异步的 API,可以结合 Pytest 测试框架使用,并且支持浏览器端的自动化脚本录制。

项目地址:

https://github.com/microsoft/playwright-python

2. 准备

在实战之前,我们只需要 2 步

第 1 步,安装 playwright-python 依赖库

# 安装依赖库

pip3 install playwright

第 2 步,安装主流的浏览器驱动

这样,会将 Chromeium、Firefox、Webkit 浏览器驱动下载到本地

# 安装浏览器驱动

python -m playwright install

3. 实战一下

3-1 录制脚本

我们先查看录制脚本的命令说明

# 我们通过下面命令打开 Chrome 浏览器开始录制脚本

# 指定生成语言为:Python(默认Python,可选)

# 保存的文件名:1.py(可选)

# 浏览器驱动:webkit(默认webkit,可选)

# 最后跟着要打开的目标网站(默认仅仅是打开浏览器,可选)

python -mplaywright codegen --target python -o 1.py -b webkit https://www.baidu.com

接着,在浏览器模拟搜索一次的操作,然后关闭浏览器

fromplaywright import sync_playwright

def run(playwright):browser = playwright.webkit.launch(headless=False)context = browser.newContext#Opennew pagepage = context.newPage# Gotohttps://www.baidu.com/page.goto("https://www.baidu.com/")

# Fill input[name="wd"]

page.fill("input[name="wd"]","AirPython")

# Press Enter# 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.close

browser.close

withsync_playwrightasplaywright:

run(playwright)

3-2 同步

同步的关键字为:sync_playwright

比如,我们依次使用三个浏览器内核打开浏览器,然后百度一下,接着对在搜索界面截图,最后关闭浏览器

fromtimeimport sleep

fromplaywright import sync_playwright# 注意:默认是无头模式withsync_playwrightasp:# 分别对应三个浏览器驱动forbrowser_typein[p.chromium, p.firefox, p.webkit]:

# 指定为有头模式,方便查看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=百度热榜")

# 截图page.screenshot(path=f example-{browser_type.name}.png )

# 休眠5s

sleep(5)

# 关闭浏览器browser.close

需要指出的是,playwright-python 内置的 API 基本上囊括常见的自动化操作

3-3 异步

异步步的关键字为:async_playwright

结合 asyncio,我们同时执行上面的操作

import asyncio

fromplaywright import async_playwright# 异步执行async def main:asyncwithasync_playwrightasp:forbrowser_typein[p.chromium, p.firefox, p.webkit]:

# 指定为有头模式,方便查看browser = await browser_type.launch(headless=False)page = await browser.newPageawait page.goto( http://baidu.com )

# 执行一次搜索操作await page.fill("input[name="wd"]","AirPython")

await page.press("input[name="wd"]","Enter")

# 等待页面加载完全await page.waitForSelector("text=百度热榜")

# 截图await page.screenshot(path=f example-{browser_type.name}.png )

await browser.closeasyncio.get_event_loop.run_until_complete(main)

4. 最后

事实上,Playwright 是一个跨语言的自动化框架,支持 Python、Java、JS 等。

Playwright 相比传统的自动化框架 Selenium 来说,在 Context 上下文及 API 使用上,显得更简洁且强大,更加详细的功能可以通过阅读原文去解锁。

【责任编辑:庞桂玉 TEL:(010)68476606】

点赞 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/297909.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mapbox 导航_狂甩不掉,骑行最稳手机支架!一体式安装太方便,秒变单车导航仪...

发对于骑行爱好者而言,对手机支架的稳固性有很高的要求,同时支架体积不能太大,对手机本身也要有一定的保护性,手机安放好,骑行才能更自在!一个舒适的手机支架,对于业务繁忙或者像小渣一样的路痴…

Docker小白到实战之Docker网络简单了解一下

前言现在对于Docker容器的隔离性都有所了解了,但对容器IP地址的分配、容器间的访问等还是有点小疑问,如果容器的IP由于新启动导致变动,那又怎么才能保证原有业务不会被影响,这就和网络有挂钩了,接下来就大概说说。正文…

(三)java的数据类型

java是一种强类型的语言,所谓强类型,意味着每个变量都要有确定的类型,每个表达式也要有明确的类型,包括传递的某些参数。java中从大的方面分有两大数据类型,分别是基本数据类型和引用数据类型,基本数据类型…

遍历DataTable内存数据的三种方法性能对比

http://www.cnblogs.com/guowei1027/archive/2009/12/15/1624699.html 前几年曾经碰到一个生成递归树形菜单的功能,由于系统比较庞大,有300-400个菜单项,把这些菜单一次性递归加载,的确需要耗费一些时间。 当然若是动态加载什么的…

^_^家园游记^_^

j 你梦想中的家是怎么家的呢? 是鲁宾逊漂流记中那样:一个荒岛,一片青山绿水的悠闲自在? 还是让人流连忘返的色彩斑斓,鳞次栉比,浓浓的欧式典雅? 或是奔放自由的乡村田园,精…

sigar如何获取linux的buffer内存,Linux 下使用Sigar 获取内存信息

上一篇文章介绍了linux下的sigar 库,并使用sigar 库来获取cpu 使用率,本文在这里介绍一下如何使用sigar 库获取内存信息.和cpu 一样,sigar中有和内存相关的结构体sigar_mem_t,我们来看一下结构体原型:typedef struct {sigar_uint64_tram,total,used,free,actual_used,actual_fr…

如何将手机投屏到电脑_手机如何投屏到电脑上?详细教程看这里,手机投屏

手机再大的屏幕,也没有手机投屏到电脑、电视的体验爽。那么哪款投屏软件好用?又如何使用呢?下面小编给大家介绍下金舟苹果手机投屏软件,一起来看看如何将手机投屏到电脑上,详细步骤如下。第一步、首先,在电…

inputstream是否一定要close_汽车加装行李架后,总被交警拦下,类似改装,是否一定要备案...

其实改装不是儿戏,有些部位是一定不能触碰的,汽车“轻改”后担心上路被交警处罚,哪些是不能触碰的“红杠杠”,汽车加装行李架后,总被交警拦下,类似改装,是否一定需要备案,是我们今天…

不好意思,爱因斯坦这次,又对了!

▲ 点击查看在科学界中,有一个非常著名的概念,叫做后设认知。官方解释是:人们是如何对自己的思维模式进行反思。打个简单的比方:你学习或者自己孩子学习的时候,会不会经常出现一道数学题反复做错的情况,明明…

如何正确处理 .NET 文件的 `File in use by another process` 异常 ?

咨询区 Dawsy:我的项目中有一个需求,它需要不断的访问一个文件,很多时候这个访问逻辑都是正常的,但有时候访问太快,会抛出如下异常:"File in use by another process"为了能找到其解决方案&#…

live555学习笔记7-RTP打包与发送

七 RTP打包与发送rtp传送开始于函数:MediaSink::startPlaying()。想想也有道理,应是sink跟source要数据,所以从sink上调用startplaying(嘿嘿,相当于directshow的拉模式)。看一下这个函数:Boole…

ASCII 说明

Bin Dec Hex 缩写/字符 解释 0000 0000 0 00 NUL(null) 空字符 0000 0001 1 01 SOH(start of handing) 标题开始 0000 0010 2 02 STX (start of text) 正文开始 0000 0011 3 03 ETX(end of text) 正文结束 0000 0100 4 04 EOT(end of transm…

开源Math.NET基础数学类库使用(04)C#解析Matrix Marke数据格式

原文:【原创】开源Math.NET基础数学类库使用(04)C#解析Matrix Marke数据格式开源Math.NET基础数学类库使用系列文章总目录: 1.开源.NET基础数学计算组件Math.NET(一)综合介绍 2.开源.NET基础数学计算组件Math.NET(二)矩阵向量计算 3.开源.NET基础数学计算组件Ma…

元胞自动机模型_【ABM仿真模拟】第三章 元胞自动机 B

是新朋友吗?记得先点蓝字关注我哦~第三章 元胞自动机 B2020/01/233.3投票模型(Voting) 课程导读无论是国内国外,投票结果的预测都异常受到关注。在众多唐斯模型、中间选民模型 、以及Sznajd模型中,投票模型作为典型的元胞自动机&a…

喜报!985大学首次登上Nature封面,这所学校可太不容易了!

全世界只有3.14 % 的人关注了爆炸吧知识建校64年来,第一次登上期刊封面又一所985院校出息了!伦敦时间6月4号,《Nature》刊发了电子科技大学邓旭教授团队的最新研究成果,并被选为当期封面。《设计坚固的超疏水表面》《Nature》作为…

getbean方法找不到bean_iphone手机静音找不到怎么办 iphone静音找不到解决方法【图文】...

一个网友给小编留言,询问:“我的iphone调静音了现在找不到,有什么工具能找到”这一个问题,因此,在今天的iPhone使用教程,小编就给大家讲解一下具体的解决方法,那么,iphone手机静音找…

Web使用热敏打印小票(IE环境)

概述在html页下使用Epson P60II 热敏纸下打印小票&#xff0c;使用的打印方案为调用window.print()。代码实现1、定义窗体&#xff0c;设置宽度和高度<body onload"window.external.Print(0,0);" style"margin-top:0px;" ><form id"form1&qu…

linux配置ip地址 routes,CentOS 7 设置网络IP地址(示例代码)

CentOS 7 设置网络IP地址自动获得IP地址1&#xff0c;CentOS 7自动获得一个IP地址[[email protected] ~]# dhclient2&#xff0c;查看网卡信息&#xff0c;会发现有一个ens33的网卡[[email protected] ~]# ip addr1: lo: mtu 65536 qdisc noqueue state UNKNOWN qlen 1link/loo…

一些鲜为人知的编程事实(省身)

David Veksler曾发表过一篇博文《Some lesser-known truths about programming》&#xff0c;列出了一些鲜为人知的编程事实&#xff0c;这些事实是什么呢&#xff1f;酷壳个人网站楼主陈皓对此文进行了翻译&#xff0c;全文如下&#xff1a; 我的程序员经历让我明白了一些关于…

Android推送通知指南(转)

在开发Android和iPhone应用程序时&#xff0c;我们往往需要从服务器不定的向手机客户端即时推送各种通知消息&#xff0c;iPhone上已经有了比较简单的和完美的推送通知解决方案&#xff0c;可是Android平台上实现起来却相对比较麻烦&#xff0c;最近利用几天的时间对Android的推…