Playwright自动化框架系列(四)

📖 前言

👋 简介

本章节介绍在对元素进行定位后的操作,达到与页面进行交互的目的,比如鼠标点击,输入文本,单选/多选的操作等。

💡 正文

1 输入文本

1.1 fill()

locator.fill()是输入文本做简单,最常用的一个方法,它聚焦元素并input使用输入的文本出发事件

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    page.goto("https://www.baidu.com")
    print(page.title())
    page.locator('#kw').fill('playwright')
    page.locator('#su').click()
    page.wait_for_timeout(3000)
    browser.close()
1.2 type()

locator.type()输入文本是以一个字符一个字符输入的,模拟我们在键盘上键入的每一个字符

from playwright.sync_api import sync_playwright
import time

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    page.goto("https://www.baidu.com")
    print(page.title())
    page.locator('#kw').type('playwright')
    page.locator('#su').click()
    page.wait_for_timeout(3000)
    browser.close()

执行代码会发现,打开百度的时候,输入playwright的是一个字符一个字符输入的,但是速度很快需要仔细观察
备注type()方法相当于执行了所有必要的键盘事件,如keydownkeyupkeypress事件,甚至可以指定delay按键之间的可选操作来模拟真实的用户行为。

2 鼠标点击

通过使用locator.click()方法来帮助我们实现简单的点击操作

# 单击
page.get_by_role("link", name="登录").click()
# 双击
page.get_by_text("登录").dblclick()
# 右键
page.get_by_role("link", name="登录").click(button="right")
# Control+左键
page.get_by_role("link", name="登录").click(modifiers=["Control"])
# Shift+左键
page.get_by_role("link", name="登录").click(modifiers=["Shift"])
# Shift+右键
page.get_by_role("link", name="登录").click(button="right", modifiers=["Shift"])

3 下拉框

使用locator.select_option()选择元素中的一个或多个选项。可以指定选项value,或label选择。可以选择多个选项

# 选择一个
page.get_by_label('address').select_option('上海')
# 选择多个
page.get_by_label('address').select_option(['上海', '南京', '成都'])

4 单选/多选

选中和取消选中多选框或单选按钮, locator.check()。此方法可用于 input[type=checkbox]input[type=radio] [role=checkbox] 元素

# 选中
page.get_by_label('test').check()
# 取消选中
page.get_by_label('test').uncheck()

5 文件上传

使用locator.set_input_files()方法选择要上传的输入文件

# 上传单个文件
page.get_by_label("file").set_input_files('file.txt')
# 上传多个文件
page.get_by_label("files").set_input_files(['file1.txt', 'file2.txt'])
# 移除所有文件
page.get_by_label("Upload file").set_input_files([])
# 从缓存中上传
page.get_by_label("Upload file").set_input_files(
    files=[{"name": "test.txt", "mimeType": "text/plain", "buffer": b"this is a test"}],
)

6 聚焦元素

使用locator.focus()聚焦给定的元素

page.get_by_label('password').focus()

🎉 欢迎我的关注公众号

在这里插入图片描述

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值