Playwright入门学习

目录

一 安装

二 编写第一条case

1.引入页面

2.页面等待

3.浏览器在可视化页面执行

4.web页面元素查找

5.debug模式下对表达式求值

6.断言

7.pytest命令行参数

8.通过录制的方式自动生成代码

9.url地址配置baseurl(切换测试地址)

10.点击方法click 使用


根据知识星球山豆根老师的系列视频学习记录的笔记,来源:

一 安装

Pip install pytest-playwright  安装playwright相关的库

playwright  install 安装playwright内置的浏览器:Chromium/firefox/webkit

二 编写第一条case

1.引入页面

deftest_baidu(page:Page):

page:Page  引入一个page类,下面page.就能出来东西了

2.页面等待

page.wait_for_timeout(5_000)  等待5

不用sleep,因为有些是异步的,sleep会阻碍线程,可以用wait_for_timeout

3.浏览器在可视化页面执行

一般是在内存跑,想让浏览器在可视化界面跑,在终端,执行:pytest --headed my_search_baidu.py

也可以在工程文件的设置-编辑-其他参数里加上--headed,每次跑就会打开浏览器了

4.web页面元素查找

Ctrl+F后,在元素页面定位到编辑框后,确认关键词是否唯一://input[@name="wd"]

5.debug模式下对表达式求值

debug模式下,在更多里找到对表达式求值,可以实验找到的元素是否正确

先#su看下数量多不多,多的话再重新找

表达式输入:page.locator('//input[@name="wd"]').fill("playwright") 点击求值,返回none时可以看到浏览器已经输入内容了

6.断言

断言:expect,要引入后再调(默认是在5毫秒内完成)

运行到这句报错:expect(page.get_by_text("https://github.com/microsoft/playwright")).to_be_visible()

解决:第一行from的sync_api多写了个a,去掉ok了

(Async api是异步的,可以同时执行多个任务。Sync api是同步的,执行完当前才能进行下一个)

7.pytest命令行参数

在根目录下新建pytest.ini,添加addopts: --headed,就会全局生效

多个参数:addopts:--headed--browser=firefox

 查看有哪些参数可以用,在终端用pytest --help的命令,找到playwright的查看

--slowmo=2_000  在每个操作前等待2

--video=on 录制视频开启

--output=test_res  指定录制视频和截图文件的目录

8.通过录制的方式自动生成代码

1)在终端执行:playwright codegen 百度一下,你就知道

会调出playwright inspector的框显示代码,和浏览器

调出浏览器后,人在编辑框输入内容,及点击百度一下,就会在playwright inspector里显示对应的代码

2)在终端执行:playwright open 百度一下,你就知道

这种方式开始时未录制,在playwright inspector的框里点击record就开始录制了

录制生成的代码可以选择(lirbary是无任何框架的写法,可以选择pytest后看python代码)

9.url地址配置baseurl(切换测试地址)

在全局配置文件pytest.ini中加上参数:--base-url=http://www.xxx.com

case里只调用后续路径即可

10.点击方法click 使用

可进入click方法里查看有哪些方法再调用。

1)组合按键,click里加参数modifiers配置

page.get_by_text("点击我试试1").click(modifiers=["Control"])

2)给出按钮坐标点击

选中page.get_by_text("点击我试试1"),右键点击表达式求职,再输入.bounding_box(),可查看元素坐标

- `x`:元素左边缘相对于视口的 x 坐标。

- `y`:元素上边缘相对于视口的 y 坐标。

- `width`:元素的宽度。

- `height`:元素的高度。

3)鼠标右键点击

page.get_by_text("点击我试试1").click(button="right")

4)鼠标点击次数

page.get_by_text("点击我试试1").click(click_count=3, delay=1_1000)

这里的delay是鼠标点下去,再松开的时间,不是点击次数的间隔时间

5)force (不用等按钮状态加载好就可以点击)

playwright里提供了auto-waiting的操作,只有如下等的状态都ok了才进行点击操作。

  • locator resolves to exactly one element
  • element is Visible
  • element is Stable, as in not animating or completed animation
  • element Receives Events, as in not obscured by other elements
  • element is Enabled

当rorce=True时,就是不做等待直接点击

page.get_by_text("点击我试试1").click(force=True)

6)no_wait_after (点击后不等待页面弹窗加载就可以点击)

这个点击会触发弹窗,弹窗是阻断性的,属性=True,click就可以忽略弹窗继续点击

7)trial

auto-waiting的操作要进行等待,可当做等待来使用。设置force时不做等待

page.get_by_text("点击我试试1").click(trial=True)

8)双击

page.get_by_text("点击我试试1").dblclick()

也可以用click_count=2

总结,click操作的整体流程

1.自动等待,除非有force设置

2.尽量滚动到你可见的页面去操作

3.点击操作

4.等待初始化完成

  • 16
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值