目录
1. 提示消息的元素定位和断言
场景,点击按钮后页面有弹框提示,虽然是弹框,但是可以根据get_by_text去定位元素。断言是否有正确的弹框提示
问题:click后直接断言,case可能会失败,断言失败
解决:page goto后等待3秒,就能执行成功了
备注:问题原因是页面元素未加载完,弹框未取到失败。等网络请求都加载完时退出goto这个动作,就能解决了,在goto里加上参数:wait_until="networkidle"
goto方法的参数wait_until共有5个值:
1.commit:页面已经接受到网络响应并开始加载文档
2.domcontentloaded:DOMContentLoaded事件被触发,即页面的DOM内容已经加载和解析,但是图片/样式表和框架还在加载中
3.load:load事件被触发,即页面所有依赖资源已经加载完成
4.networkidle:不推荐使用,考虑操作完成时,页面在至少500毫秒内没有任何网络连接活动
5.None:如果没有指定wait_until,则默认行为是等待load事件
2.新页面跳转和断言
本页跳转的,用跳转后的元素是否可现断言即可。
新建页面跳转的,用with监听页面,监听到后放到new page里,打开new page后再去断言。
获取new page:
page.goto("/demo/link",wait_until="networkidle")
with page.expect_popup() as new_page:
page.get_by_text("xxxxx").click()
page_new=new_page.value
开始用expect(page.get_by_text("搜索")).to_be_visible()断言报错,提示not found,
找到搜索按钮的元素,class="search-button",搜索后发现只有一个,可用
改成expect(page_new.locator(".search-button")).to_be_attached()就ok了
playwright的调试模式很好用:
3.悬浮方法使用
page.locator("#c4").hover()
expect(page.get_by_text("你已经成功悬浮")).to_be_visible()
备注:悬浮方法的难点在于悬浮不被打断,这个再追加
4.下拉框的使用
page.get_by_text("点击选择").click()
page.get_by_text("aaa").click()
expect(page.get_by_text("你选择了aaa"))
page.get_by_text("点击选择").click()
page.get_by_text("bbb").click()
expect(page.get_by_text("你选择了bbb"))