xpath定位:selenium和playwrightAnt Design / 表单类页面)

selenium

💗元素定位出多个结果处理(Ant Design / 表单类页面)

比如要选择供应商

元素如下

定位

复制代码

//label[normalize-space(text())='供应商']/ancestor::div[contains(@class,'ant-form-item-row')]//input[@placeholder='请选择']

出现多个结果

修改定位如下:

复制代码
//label[normalize-space()='供应商']/parent::div/following-sibling::div//span[contains(@class,'select-input')]//input

结果是唯一的

详细分析:

复制代码
//label[normalize-space()='供应商'] 
/parent::div 
/following-sibling::div 
//span[contains(@class,'select-input')]//input

因为"请选择"不是唯一的,而"供应商"是唯一的

1.定位label本身

复制代码
//label[normalize-space()='供应商']

2.parent::div----回到label所在列

复制代码
/parent::div

结构是这样的

复制代码
div (label 容器)
 └── label 供应商

3.following-sibling::div ------ 找右侧输入区域

复制代码
/following-sibling::div

4.精准找到 Select 的 input

复制代码
//span[contains(@class,'select-input')]//input

💗xpath万能模板(Ant Design / 表单类页面)

普通输入框

复制代码
//label[normalize-space()='字段名'] /parent::div /following-sibling::div //input

AntD 下拉框(Select)

复制代码
//label[normalize-space()='字段名'] /parent::div /following-sibling::div //span[contains(@class,'select-input')]//input

TextArea

复制代码
//label[normalize-space()='字段名'] /parent::div /following-sibling::div //textarea

Playwright

Ant Design / 表单类页面比selenium更方便

playwright定位优先级

从高到低

1️⃣ getByRole()

2️⃣ getByLabel()

3️⃣ getByText()

4️⃣ locator('css')

5️⃣ locator('xpath') ❌(最后兜底)

以上述供应商选择为例

getByRole()

复制代码
const supplierSelect = page.getByLabel('供应商');

• Playwright 会自动:

• 找 <label> 文本 = "供应商"

• 关联到右侧的可交互控件

• 不关心 DOM 多乱

• Ant Design 完全适配

选择供应商

复制代码
await page.getByLabel('供应商').click(); 
await page.getByRole('option', { name: '某某供应商' }).click();

✔ 优点:

• 不关心 dropdown 在 body 还是 portal

• 自动等待

• 语义清晰,可维护性极高

表单中 Select 的"标准 Playwright 写法"

复制代码
await page.getByLabel('供应商').click();
await page.getByRole('listbox').getByText('供应商名称').click();
相关推荐
把头塞进显示器4 天前
电商平台-测试报告
python·selenium·pytest
霍格沃兹测试学院-小舟畅学5 天前
UI 测试的语义断言:Midscene aiAssert 比像素比对稳在哪、又会骗在哪
人工智能·测试工具
zuozewei5 天前
附录 A:主流工具对比选型表
人工智能·测试工具
我的xiaodoujiao5 天前
Django 基础知识详细图文教程 10-Django 模板引擎 3
后端·python·测试工具·django
霍格沃兹测试学院-小舟畅学5 天前
Google 开源 ARTEMIS:AI Agent 如何接管 Android 真机测试?
人工智能·测试工具
Liaiyang665 天前
# 自研 AST 容错初筛工具:横向评测 Django、PyTorch、TensorFlow 三大开源 Python 框架异常收容风险
python·测试工具·自动化·开源软件·代码规范·devops·代码复审
霍格沃兹测试学院-小舟畅学5 天前
我用 AI 把 Swagger 变成 500 条 pytest 用例,回归从 3 天到 3 小时
人工智能·测试工具
奔跑中的小象6 天前
GuideLLM 压测实战指南:给大模型推理服务做一次完整 SLA 评估
测试工具·guidellm
cpolar技术支持6 天前
本地 Playwright 测试报告怎么远程复盘?Trace Viewer 跑起来后,用 cpolar 分享失败现场
前端·自动化测试·测试工具·cpolar·playwright
测试狗科研平台7 天前
材料热传导能力表征——热导率计算方法与流程解析
科技·测试工具·材料工程