1、缺省时间——在playwright中建议使用,不建议使用time.sleep()
page.wait_for_timeout(1000) # 等待时间为毫秒
2、获取文本内容
需先定位元素,在从元素中获取文本
page.locator(定位元素).inner_text() # 获取普通文本内容
page.locator(定位元素).text_content() # 获取单文本内容,隐藏内容
page.locator(定位元素).all_text_content() # 获取所有文本内容,隐藏内容
3、点击(click)
page.locator('src').click() # 单价
page.locator('#su').dblclick() # 双击
4、悬停
将鼠标放到元素位置
page.locator('#su').hover()
page.get_by_text("定位元素").hover()
5、等待元素可见
# 元素原不可见,等待后可见,在进行操作timeout是毫秒
page.locator('#source').wait_for(timeout=3000)
6、page页面操作
page.go_back() # 前进
page.go_forward() # 后退
page.reload() # 刷新
page.title() # 获取title
page.content() # 获取网页的html
page.set_viewport_size({"width":640,"height":480}) #设置页面大小
# 切换浏览器标签页
from playwright.sync_api import sync_playwright
p = sync_playwright().start()
# headless设置图形界面
# 返回对象为browser类型
browser = p.chromium.launch(headless=False)
# 创建BrowserContext对象
context = browser.new_context()
# 启动跟踪功能
context.tracing.start(snapshots=True, sources=True, screenshots=True)
page = context.new_page()
page.goto("https://www.baidu.com/")
page.locator('a').click()
# 等待2秒
page.wait_for_timeout(2000)
# pages属性是 所有窗口对应的page对象的列表,后续可通过newPage进行操作
# 首次访问为0,后续跳转页面从1开始
newPage = context.pages[1]
# newPage.locator('#source')
# 结束跟踪
context.tracing.stop(path="trace.zip")
page.close()
p.stop()
7、frame切换
# 返回frame对象
frame =page.frame_locator('iframe[src="sample1.html"]')
lcs = farme.locator(".sourc").all()
# 在使用过程中不支持writ_for_timeout的方法
8、截屏
# 截屏当前页面可见内容,保存到当前工作目录下
page.screenshot(path="loginMaskLi.png")
# 截屏完整页面,页面内容长度超过窗口高度时,包括不可见部分
page.screenshot(path="loginMaskLi.png",full_page=True)
#只针对某个可见元素的显示内容进行截屏,使用locator的对象
page.locator('#input[type=file]').screenshot(path="loginMaskLi.png")
9、断言
expect与to_be_visible结合使用
expect函数
toEqual:相等
toContain:包含
toBetruthy:是否
expect
# expect 断言 严谨只找其中一个
expect(page).to_have_title("断言元素")
# nth从多个中找最后一个,to_be_visible是是否存在 .last 找最后一个 first 找到第一个
expect(page.get_by_text("元素").nth(-1)).to_be_visible(timeout=300)
# 通用文本进行断言
expect(page.locator(f'//thy-tag[text()="{产品标识}"]')).to_be_visible()
assert
# assert 判断是否存在 count多少个
assert page.get_by_text("元素").count()
10、键盘回车键
page.keyboard.press("Enter")
备注:
后续使用中常见的在进行补充