01【python+playwright测试自动化】之定位方式

playwright系列文章目录

00Mac安装playwright
00Mac 安装配置Python3虚拟环境(VirtualEnv、virtualenvwrapper扩展包)



前言

本文主要介绍playwright的常见的定位方式,在介绍之前,简单介绍一下它的录制功能。下一篇通过一个简单的实战小demo来介绍一下实际应用。


一、实现一个demo

1.在Terminal终端输入: playwright codegen

在这里插入图片描述

2.会自动开始动作脚本录制

将about:blank清除,输入www.baidu.com
在这里插入图片描述
搜索关键字:测速,会将操作动作都记录下来,形成脚本,可复制到pycharm中直接使用
在这里插入图片描述

二、通过CSS、XPath定位

Playwright 支持 CSS 和 XPath 选择器, css= 或 xpath= 前缀可省略,会自动检测它们

# CSS方法
# page.locator("css=#kw").fill("米兰")
page.locator("#kw").fill("米兰")


# xpash方法
# page.locator('xpath=//*[@id="su"]').click()
page.locator('//*[@id="su"]').click()

三、通过文本定位

语法:get_by_test()

关键字:换一换

    #text文本的方法
    #text=xxxx,模糊匹配,大小写不敏感
    #text = 'xxxx', 精准匹配,大小写敏感
    page.locator('text=米兰的最新相关信息').click()
    #方式1
    page.locator('text=换一换').click()   #能定位到


    #方式2
    #可以通过元素包含的文本找到该元素
    page.get_by_text('换一换').click()    #能定位到
    # 输入部分文本,模糊匹配
    page.get_by_text(re.compile('换一')).click()   #能定位到
    #精准匹配
    page.get_by_text('换一',exact=True).click()     #定位不到   
  • 按文本匹配始终会规范化空格,即使完全匹配也是如此。例如,它将多个空格转换为一个空格,将换行符转换为空格,并忽略前导和尾随空格。
  • 建议使用文本定位器来查找非交互式元素,如 div、span、p 等。对于button、a、input等交互式元素,请使用角色定位器。

DOM结构
在这里插入图片描述

四、通过角色定位

语法:get_by_role()

page.get_by_role("button", name="百度一下").click()
  • 角色定位器包括按钮、复选框、标题、链接、列表、表格等,许多 html 元素都具有隐式定义的角色,该角色可由角色定位器识别。
  • 优先考虑角色定位器来定位元素,因为这是最接近用户和辅助技术感知页面的方式。

DOM结构
在这里插入图片描述

五、通过标题定位

语法:get_by_title()

page.get_by_title("清空").click()

DOM结构
在这里插入图片描述

六、通过占位符定位

语法:get_by_placeholder()

frame = page.frame_locator('//html//body//div[3]//div[3]//div[1]//div//div[3]//div[1]//div[2]//iframe')
frame.get_by_placeholder('邮箱账号或手机号码').fill('lijiajia@xx.com')
frame.get_by_placeholder("输入密码").fill('Aa123456')

DOM结构
在这里插入图片描述

七、通过标签定位

语法:get_by_lable()

注意:大多数表单控件通常都有专用标签,可以方便地用于与表单交互。在这种情况下,您可以使用page.get_by_label()通过其关联标签定位控件

1.frame.get_by_label('30天内免登录').click()
2.page.get_by_label("Password").fill("Aa123456")

DOM结构
在这里插入图片描述

八、通过替代文本定位元素,通常是图像

语法:get_by_alt_text

page.get_by_alt_text('公安').click()

DOM结构:alt=“公安”
在这里插入图片描述

九、通过设置自定义测试 ID 属性

语法:page.get_by_test_id()

// A code block
var foo = 'bar';

DOM结构
在这里插入图片描述

十、网页类的操作


    #访问网址
    page.goto('https://mail.163.com/')
    page.goto('https://www.baidu.com')
    page.go_back()       #后退
    page.go_forward()    #前进
    page.reload()        #刷新
    print(page.url)      #当前url
    print(page.title())
    print(page.content())  #页面源代码

十一、元素类操作

page.goto("https://www.baidu.com/")
page.locator("#kw").fill("米兰") #输入
time.sleep(2)
page.locator("#kw").clear()  #清空
time.sleep(2)
page.get_by_role('button').dblclick()  #双击
time.sleep(2)
print(page.locator("#kw").get_attribute('name')) #获取元素的属性

十二、窗口类操作

    page.goto("https://www.zhibo8.com/")
    #对于新tab窗口的处理
    with context.expect_page() as new_page_info:
        #click预期会产生一个新的窗口tab
        page.get_by_role('link',name='个人').click()

    new_page = new_page_info.value
    new_page.get_by_role('link',name='已购方案').click()

    with context.expect_page() as new_page_info1:
        page.get_by_role('link', name='数据').click()

    data_page=new_page_info1.value
    data_page.get_by_role('link',name='赛程').click()

十三、鼠标类的操作

鼠标的移动

    1.drag_to()
    拖拽鼠标从某个元素到另一个元素上
    page.goto("https://sahitest.com/demo/dragDropMooTools.htm")
    page.locator('#dragger').drag_to(page.locator("text=Item 1"))

    2.drag and drop()
    page.drag_and_drop('#dragger','text=Item 1')

鼠标移动到元素上停留

#hover()
    page.goto("https://www.baidu.com/")
    set_element=page.locator('#s-usersetting-top') 
    set_element.hover()
-------------------------------------------------------

dropdown = page.locator('.dropdown--hoverable')
    # 鼠标悬停
dropdown.hover()
    # 点选项
dropdown.locator('.dropdown__link >> text=python').click()




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

佳佳不爱上班

送你一朵小红花,生活不必太焦虑

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值