Playwright 定位器基本语法 02

Playwright测试

执行操作前无需等待任何事项:Playwright会自动等待各种可操作性检查通过后再执行每个操作。

执行检查时也无需处理竞态条件-Playwright断言的设计方式是描述最终需要满足的预期。

第一个样例测试

注意文件名test_以及每个测试名称是如何遵循前缀约定的。

tesst_example.py

import re
from playwright.sync_api import Page, expect

def test_has_title(page: Page):
    page.goto("https://playwright.dev/")

    # Expect a title "to contain" a substring.
    expect(page).to_have_title(re.compile("Playwright"))

def test_get_started_link(page: Page):
    page.goto("https://playwright.dev/")

    # Click the get started link.
    page.get_by_role("link", name="Get started").click()

    # Expects page to have a heading with the name of Installation.
    expect(page.get_by_role("heading", name="Installation")).to_be_visible()

大多数测试将从导航到指定url页面开始。之后,测试人员将能够与页面元素进行交互。

page.goto("https://playwright.dev/")

Playwright会等待页面加载完毕后再继续执行。

执行操作首相需要定位元素。Playwright使用 Locators API来实现这一点。Playwright会在元素可操作之前执行操作,因此无需等待元素变为可用状态。

# Create a locator.
get_started = page.get_by_role("link", name="Get started")
# 使用page.get_by_role()方法创建一个定位器
#定位具有"link"角色且文本为"Get started"


# Click it.
get_started.click()

Base actions

Playwright最常用的操作列表

locator.check() 选中输入复选框

主要用途:选中复选框(checkbox)或单选按钮(radio)
操作行为:
	如果元素未被选中,则将其选中
	如果元素已被选中,则保持选中状态(不会取消选中)
	
locator.uncheck() - 取消选中
locator.is_checked() - 检查是否被选中
locator.click() - 通用点击操作

locator.click() 点击该元素

用于执行点击操作的核心方法
基础点击操作:对定位到的元素可见且可点击
自动等待:会自动等待元素可见且可点击
    
# 定位并点击链接
link = page.get_by_role("link", name="查看详情")
link.click()

# 直接链式调用
page.get_by_text("提交").click()

locator.uncheck() 取消选中输入复选框

用于取消选中复选框或单选按钮的方法
# 取消选中复选框
checkbox = page.get_by_role("checkbox", name="记住我")
checkbox.uncheck()

# 取消选中单选按钮
radio_button = page.get_by_role("radio", name="女")
radio_button.uncheck()

locator.hover() 将鼠标悬停在元素上

用于模拟鼠标悬停操作的方法
鼠标悬停:将鼠标光标移动到指定元素上方
触发事件:通常用于触发mouseover或mouseenter事件
自动等待:会等待元素变为可交互状态
# 悬停显示下拉菜单
menu_item = page.get_by_role("button", name="用户设置")
menu_item.hover()

# 悬停显示提示信息
tooltip_element = page.get_by_text("帮助")
tooltip_element.hover()

locator.fill() 填写表单字段,输入文本

用于在输入框中填入文本内容的方法
文本特点:向input、textarea或其它可编辑元素中填充文本
自动聚焦:执行前会自动聚焦到目标元素
清空原有内容:默认会清空现有内容再填入新内容

# 填充用户名输入框
username_input = page.get_by_role("textbox", name="用户名")
username_input.fill("张三")

# 填充密码输入框
password_input = page.get_by_label("密码")
password_input.fill("123456")

# 直接链式调用
page.get_by_placeholder("请输入邮箱").fill("example@email.com")

locator.focus() 聚焦元素

用于将焦点设置到指定元素上的方法
# 聚焦到输入框
input_field = page.get_by_role("textbox", name="搜索")
input_field.focus()

# 聚焦到按钮
submit_button = page.get_by_role("button", name="提交")
submit_button.focus()

locator.press() 按下单个键

用于模拟键盘按键操作的方法
键盘模拟:在目标元素上模拟按下待定键
支持组合键:可以发送单个键或键的组合

# 按下回车键
input_field = page.get_by_role("textbox")
input_field.press("Enter")

# 按下 Tab 键
button = page.get_by_role("button")
button.press("Tab")

# 按下组合键
text_area = page.get_by_role("textbox")
text_area.press("Control+A")  # 全选

locator.set_input_files() 选择要上传的文件

用于设置文件上传输入框文件内容的方法
文件上传:专门用于<input type="file">元素的文件选择操作
支持多种格式:可以接受文件路径、文件对象或字节数据
多文件支持:支持单个文件或多个文件同时上传
# 上传单个文件
file_input = page.get_by_role("textbox", name="选择文件")
file_input.set_input_files("path/to/file.txt")

# 上传多个文件
file_input.set_input_files(["file1.txt", "file2.pdf"])

# 使用文件对象
file_input.set_input_files({
    "name": "test.txt",
    "mimeType": "text/plain",
    "buffer": b"file content"
})


locator.select_option() 从下拉菜单中选择选项

用于操作下拉选择框(select 元素)的方法
选项选择: 在 select 元素中选择一个或多个选项
多选支持:支持单选或多选下拉框

# 按选项文本选择
select_element = page.get_by_role("combobox", name="城市")
select_element.select_option("北京")

# 按选项值选择
select_element.select_option(value="beijing")

# 按索引选择
select_element.select_option(index=0)

# 选择多个选项(多选框)
multi_select = page.get_by_role("listbox")
multi_select.select_option(["选项1", "选项2"])


posted @ 2025-12-15 10:55  乐乐乐乐乐乐樂  阅读(11)  评论(0)    收藏  举报
jQuery火箭图标返回顶部代码