前言
页面上一闪而过的提示语,一般出现1-3秒就会消失,这种消息框如何定位呢?
示例
如下操作成功的提示语
它过1-3秒就自动消失了,按下f12, 鼠标还没指上去就不见了,无法获取它的元素属性。
误区: 首先这不是标准的alert,所以不能用 dialog 事件监听(很多初学者分不清alert 和弹出消息框)
调试暂停
F12后点开源代码,然后点暂停按钮
这时候页面处于调试暂停状态了
再回到检测元素,鼠标指上去,就能看到元素属性了
代码示例
断言消息框内容,可以直接用expect 断言
from playwright.sync_api import sync_playwright, expect
# 上海悠悠 wx:283340479
# blog:https://www.cnblogs.com/yoyoketang/
with sync_playwright() as p:
browser = p.chromium.launch(headless=False, slow_mo=2000)
context = browser.new_context()
page = context.new_page()
page.goto('file:///C:/Users/dell/Desktop/a2/t.html')
# 点击success按钮
page.locator('.btn-success').click()
# 断言
expect(page.locator('.toast-message')).to_have_text("操作成功!")
page.pause()
有些同学习惯于先获取内容,再用assert 断言也可以
from playwright.sync_api import sync_playwright, expect
# 上海悠悠 wx:283340479
# blog:https://www.cnblogs.com/yoyoketang/
with sync_playwright() as p:
browser = p.chromium.launch(headless=False, slow_mo=2000)
context = browser.new_context()
page = context.new_page()
page.goto('file:///C:/Users/dell/Desktop/a2/t.html')
# 点击success按钮
page.locator('.btn-success').click()
# 获取一闪而过的消息框内容
t = page.locator('.toast-message').inner_text()
print(f"消息框内容: {t}")
assert t == '操作成功!'
还有同学提到说如何判断消息框弹出来了, 用if判断元素is_visible() 即可
from playwright.sync_api import sync_playwright, expect
# 上海悠悠 wx:283340479
# blog:https://www.cnblogs.com/yoyoketang/
with sync_playwright() as p:
browser = p.chromium.launch(headless=False, slow_mo=2000)
context = browser.new_context()
page = context.new_page()
page.goto('file:///C:/Users/dell/Desktop/a2/t.html')
# 点击success按钮
page.locator('.btn-success').click()
# 如何判断消息框弹出来了
if page.locator('.toast-message').is_visible():
print("消息框弹出来了。。。。")
page.pause()
文章转自:https://www.cnblogs.com/yoyoketang/p/17636715.html