文本框不同类型输入

# 文本输入
page.locator('#name').fill('Peter')

# 日期输入
page.locator('#date').fill('2020-02-02')

# 时间输入
page.locator('#time').fill('13:15')

# 本地时间输入
page.locator('#local').fill('2020-03-02T05:15')

# 通过label输入,注意只能针对特定情况使用
page.locator('text=First Name').fill('Peter')

标准 select 选择选择

# 通过值
page.locator('select#colors').select_option('blue')

# 通过label
page.locator('select#colors').select_option(label='Blue')

# 多选
page.locator('select#colors').select_option(['red', 'green', 'blue'])

另:如果是 tagname 不是 select 的选择框,可以通过多次点击的方式选择

文件上传

# 选择一个文件
page.locator('input#upload').set_input_files('myfile.pdf')

# 选择多个文件
page.locator('input#upload').set_input_files(['file1.txt', 'file2.txt'])

# 移除全部已选的文件
page.locator('input#upload').set_input_files([])

# 从内存上传缓冲区
page.locator("input#upload").set_input_files(
    files=[
        {"name": "test.txt", "mimeType": "text/plain", "buffer": b"this is a test"}
    ],
)

dialog 弹窗

#弹窗中确认
page.on("dialog", lambda dialog: dialog.accept())
page.locator("button").click()
#弹窗中取消
page.on("dialog", lambda dialog: dialog.dismiss())
page.locator("button").click()

iframe 内元素操作

#首选定位iframe需要操作的元素~然后操作不是selenium得切入切出
username = page.frame_locator('.frame-class').locator('#username-input')
username.fill('John')

获取 table 中数据

#返回table中第一个tr,返回格式是list
rows = page.locator("table tr")
#获取全本内容
texts = rows.all_text_contents()

连接定位 用于层级定位

css=article >> css=.bar > .baz >> css=span[attr=value]
# 等同于
document
  .querySelector('article')
  .querySelector('.bar > .baz')
  .querySelector('span[attr=value]')

通过 nth 下标定位

# 点击第一个按钮,从0开始
page.locator("button >> nth=0").click()
# 或者
page.locator("button").first.click()
# 点击最后一个难就
page.locator("button >> nth=-1").click()

截屏

# 浏览器截屏
page.screenshot(path="screenshot.png")
#截全屏
page.screenshot(path="screenshot.png", full_page=True)
#截元素,验证码OCR识别可用
page.locator(".header").screenshot(path="screenshot.png")

等待

自动等待解决了一部分,具体见下表

Action Attached Visible Stable Receives Events Enabled Editable
check Yes Yes Yes Yes Yes -
click Yes Yes Yes Yes Yes -
dblclick Yes Yes Yes Yes Yes -
setChecked Yes Yes Yes Yes Yes -
tap Yes Yes Yes Yes Yes -
uncheck Yes Yes Yes Yes Yes -
hover Yes Yes Yes Yes - -
scrollIntoViewIfNeeded Yes - Yes - - -
screenshot Yes Yes Yes - - -
#强制等待同time.sleep(3)
page.wait_for_timeout(3000)
#等待页面加载完成
page.wait_for_load_state() 
方法支持3种参数 load domcontentloaded  networkidle


↙↙↙阅读原文可查看相关链接,并与作者交流