playwright简单学习


最近学习了一下playwright, 感觉还是挺好用的, 会是下一代自动化测试工具,假以时日,必然取代selenium

playwright 是什么

Playwright是微软开源的一个UI自动化测试工具。添加了默认等待时间增加脚本稳定性,并提供视频录制、网络请求支持、自定义的定位器、自带调试器等新特性。
playwright的优势:
Selenium需要通过WebDriver操作浏览器;Playwright通过开发者工具与浏览器交互,安装简洁,不需要安装各种Driver。
Playwright几乎支持所有语言,且不依赖于各种Driver,通过调用内置浏览器所以启动速度更快。
Selenium基于HTTP协议(单向通讯),Playwright基于Websocket(双向通讯)可自动获取浏览器实际情况。
Playwright为自动等待:
等待元素出现(定位元素时,自动等待30s,时间可以自定义,单位毫秒)
等待事件发生
Playwright支持异步方式

学习playwright 的好处

提前学习先进的框架和技术, 避免自己依然困在selenium 中, 坐井观天。

playwright的原理

设计原理
和selenium 对比, 不需要使用driver 对象,所以速度更快

playwright 的官网

playwright.dev 官网地址

安装步骤(讲解python的)

pip install playwright 安装playwright这个第三方库,如果下载慢,可能需要科学上网
随后安装playwright 的内置浏览器 playwright install

安装过程中可能遇到的问题

安装报错
这个报错是因为本地缺少 cpp 的环境, 可以直接安装 visual Studio Install来补全cpp缺少的环境即可

playwright脚本录制

终端输入 playwright codegen 开始录制脚本
输入命令后,会打开一个内置浏览器,在上面操作即可,就会自动生成代码,还可以选择生成的代码的语言, 支持python, java, nodejs

playwright 常用api介绍

元素的定位, 点击等操作,都是由page对象来操作的

page = context.new_page()
创建page对象
page.locator("input[name=\"wd\"]").click()
playwright 支持 selenium 原有的xpath 和 css 定位, 不需要指定定位方式
page.goto("https://www.baidu.com/")

page.locator("input[name=\"wd\"]").fill("张子枫")
fill 就是输入,等同于selenium的sendkeys

page.select_option("下拉框元素定位信息") 

打开弹窗

# 打开页面中的弹框(popup)
with page1.expect_popup() as popup_info:
       # 根据文本定位的自定义定位
       page1.locator("text=登录").first.click()
   # 把新弹窗的赋给 page2
   page2 = popup_info.value

打开新窗口

获取浏览器上下文产生的新页面
with context.exect_page()  as new_page_info:
    page.click('a[target="_blank"]')
new_page = new_page_info.value
new_page.wait_for_load_state()

Playwright 中关于frame的使用

page.frame_locator('frame_view').locator('element_from_frame').fill('views')

playwright 和 selenium 的区别, selenium 是切入iframe之后,就会停留在iframe 中,
但是playwright 是直接进入frame里之后,就会出来,不像selenium 中需要一层层进去,playwright可以直接进去

文章作者: 陌上人如玉
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 陌上人如玉 !
  目录