You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中为不同页面复用相同的Playwright定位器?

可以实现,给你两种实用方案:

方案一:动态给Page实例绑定属性(快速临时解决)

这种方法不需要修改原有页面对象的创建逻辑,直接给已有的PAGE1、PAGE2添加定位器属性:

  1. 先定义一个辅助函数:
def setup_mylocator(page):
    page.mylocator = page.get_by_role("button", name="mono").nth(3)
  1. 在获取到PAGE1和PAGE2之后,调用这个函数完成绑定:
setup_mylocator(PAGE1)
setup_mylocator(PAGE2)
  1. 之后就能用你想要的简洁写法:
await PAGE1.mylocator.click()
await PAGE2.mylocator.click()

方案二:封装自定义Page类(适合长期项目规范复用)

如果你的项目需要频繁复用这类通用定位器,可以继承Playwright的Page类,把通用定位器做成类的属性:

from playwright.async_api import Page as AsyncPage

class CustomPage(AsyncPage):
    @property
    def mylocator(self):
        return self.get_by_role("button", name="mono").nth(3)

之后把已有的Page实例转换为自定义类类型(或者创建页面时直接使用自定义类):

# 假设PAGE1是已获取的页面对象
PAGE1.__class__ = CustomPage

同样可以直接调用:

await PAGE1.mylocator.click()
await PAGE2.mylocator.click()

提示:临时用选方案一最省事;长期项目选方案二,后续还能在CustomPage里添加更多通用方法或定位器,维护起来更方便。

内容的提问来源于stack exchange,提问作者arjepsen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 21:32:13