【python自动化】Playwright基础教程定位操作

news2024/12/25 12:39:15

上文我们已经能够成功进行登录操作了。对于里面的一些定位方式,输入,点击等操作,在这一节,我们直接进行一个大汇总。以后遇到直接来这里搜。

定位操作

定位操作都在Page类下。养成看源码的习惯,结合官方文档,源码还写了例子,真的是很详细了。

按alt文本定位元素-get_by_alt_text()

使用频率:★☆☆☆☆

释义:按alt属性的文本进行定位元素。

网页代码:

<img alt='Playwright logo'>   

定位用法:

page.get_by_alt_text("Playwright logo").click()   

参数:

  • text:str,输入要查找元素的文本。

  • exact:bool,是否找到完全匹配项:区分大小写和全字符串。默认为 false。

按标签定位元素-get_by_label()

使用频率:★☆☆☆☆

释义:允许按关联 <label> or aria-labelledby 元素的文本或 aria-label 属性查找输入元素。

网页代码:

<input aria-label="Username">   <label for="password-input">Password:</label>   <input id="password-input">   

定位用法:

page.get_by_label("Username").fill("john")   page.get_by_label("Password").fill("secret")   

参数:

  • text:str,输入要查找元素的文本。

  • exact:bool,是否找到完全匹配项:区分大小写和全字符串。默认为 false。

占位符定位-get_by_placeholder()

使用频率:★★★★☆

释义:按占位符文本定位

网页代码:

<input type="email" placeholder="请输入邮箱" />   

定位用法:

page.get_by_placeholder("请输入邮箱").fill("8888888@qq.com")   

参数:

  • text:str,输入要查找元素的文本。

  • exact:bool,是否找到完全匹配项:区分大小写和全字符串。默认为 false。

角色属性定位-get_by_role()

使用频率:★★☆☆☆

释义:通过ARIA角色、ARIA属性和可访问名称定位元素

网页代码:

<h3>Sign up</h3>   <label>     <input type="checkbox" /> Subscribe   </label>   <br/>   <button>Submit</button>   

定位用法:

# 这个是pytest-playwright进行断言的方式,后续我们会讲   expect(page.get_by_role("heading", name="Sign up")).to_be_visible()      page.get_by_role("checkbox", name="Subscribe").check()      page.get_by_role("button", name=re.compile("submit", re.IGNORECASE)).click()   

参数:太多了,看源码吧,其中role参数比较重要,比如alert就可以用来点击弹窗。

  • role:必填项,可选如下

  • "alert"|"alertdialog"|"application"|"article"|"banner"|"blockquote"|"button"|"caption"|"cell"|"checkbox"|"code"|"columnheader"|"combobox"|"complementary"|"contentinfo"|"definition"|"deletion"|"dialog"|"directory"|"document"|"emphasis"|"feed"|"figure"|"form"|"generic"|"grid"|"gridcell"|"group"|"heading"|"img"|"insertion"|"link"|"list"|"listbox"|"listitem"|"log"|"main"|"marquee"|"math"|"meter"|"menu"|"menubar"|"menuitem"|"menuitemcheckbox"|"menuitemradio"|"navigation"|"none"|"note"|"option"|"paragraph"|"presentation"|"progressbar"|"radio"|"radiogroup"|"region"|"row"|"rowgroup"|"rowheader"|"scrollbar"|"search"|"searchbox"|"separator"|"slider"|"spinbutton"|"status"|"strong"|"subscript"|"superscript"|"switch"|"tab"|"table"|"tablist"|"tabpanel"|"term"|"textbox"|"time"|"timer"|"toolbar"|"tooltip"|"tree"|"treegrid"|"treeitem"   
    
  • name:str,匹配辅助名称的选项。默认情况下,匹配不区分大小写,并搜索子字符串,用于 exact 控制此行为。

测试ID定位-get_by_test_id()

使用频率:★★★★☆

释义:通过测试ID定位元素

注意事项:默认情况下, data-testid 属性用作测试 ID。如有必要,请使用selectors.set_test_id_attribute() 配置不同的测试 ID 属性。

网页代码:

<button data-testid="directions">我是一个带有特殊id的按钮</button>   

定位用法:

page.get_by_test_id("directions").click()   

参数:

  • test_id: str,元素的ID

文本定位-get_by_text()

使用频率:★★★★☆

释义:通过给定的文本进行元素匹配。

网页代码:

<div>梦无矶 <span>小仔</span></div>   <div>梦无矶</div>   

注意我第一个梦无矶后面是有一个空格的。

定位用法:

# 匹配 <span>   page.get_by_text("小仔")      # 匹配第一个 <div>    page.get_by_text("梦无矶")      # 匹配第二个 <div>   page.get_by_text("梦无矶", exact=True) # 开启了精准匹配      # 匹配多个 <div>   page.get_by_text(re.compile("梦无矶"))      #匹配第二个 <div>   page.get_by_text(re.compile("^梦无矶$", re.IGNORECASE))   

参数:

  • text:str , 要查找元素的文本。

  • exact:bool,是否找到完全匹配项:区分大小写和全字符串。默认为 false。

标题定位-get_by_title()

使用频率:★★★☆☆

释义:通过标题文本进行定位元素

网页代码:

<span title='Issues count'>25 issues</span>   

定位用法:

page.get_by_title("Issues count")   

参数:

  • text:str,标题文本

  • exact,bool,是否找到完全匹配项:区分大小写和全字符串。默认为 false。

定位器定位-locator()

使用频率:★★★★★

释义:该方法返回可用于在此页面/框架上执行操作的元素定位器。定位器在执行操作之前立即解析为元素,因此实际上可以在不同的 DOM 元素上对同一定位器执行一系列操作。

这里面我们可以理解为selenium中的css selector,xpath selector定位,用xpath更多。

定位用法:

page.locator(selector)   page.locator(selector, **kwargs)   

参数:

  • selector:str,解析DOM元素时要用的选择器,如标签选择器。

  • has_text: 匹配包含指定文本的元素,这些元素可能包含在子元素或后代元素中。传递 [string] 时,匹配不区分大小写并搜索子字符串。例如, "Playwright" 匹配 <article><div>Playwright</div></article> .

  • has_not_text: 匹配不包含指定文本的元素,这些元素可能包含子元素或后代元素。传递 [string] 时,匹配不区分大小写并搜索子字符串。

  • has:匹配包含与内部定位器匹配的元素的元素。根据外部定位器查询内部定位器。例如, article has text=Playwright 匹配 <article><div>Playwright</div></article> 项。

  • has_not:匹配不包含与内部定位器匹配的元素的元素。根据外部定位器查询内部定位器。例如,article has_not div 匹配 <article><span>Playwright</span></article> 项。

下一节我们介绍事件操作,之后进行一些实际运用讲解。

---------------------------END---------------------------

题外话

在这里插入图片描述

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述

👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

若有侵权,请联系删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1003325.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

这场科技巨变,有生之年有希望

见到一文&#xff0c;遂分享欲爆棚&#xff0c;总结如下。 具有人类水平的人工智能大约什么时候可以出现&#xff1f; 人类水平的人工智能&#xff0c;指的是&#xff0c;不需要借助人类&#xff0c;机器能够比人类更好地完成每项任务。 针对这个问题&#xff0c;有家机构在201…

Redis高效、安全的不停机数据迁移方案

Redis是目前最流行的键值对存储数据库&#xff0c;凭借高性能和丰富的数据类型的特性&#xff0c;不仅可以作为缓存&#xff0c;还可以作为一个可持久化的数据库存储。随着业务的发展和版本的迭代&#xff0c;必然会遇到内存不足、集群节点不够和BUG等一系列问题。为了防止这些…

四川百幕晟科技有限公司:抖音名称最多多少字?

在抖音上&#xff0c;用户可以为其帐户选择昵称&#xff0c;该昵称显示在用户的个人资料中。不过&#xff0c;很多人好奇&#xff0c;一个抖音昵称到底能有多少个字&#xff1f;本文将深入探讨抖音昵称长度限制以及一些最吸引人的昵称示例。 1、抖音昵称长度限制 抖音昵称的长度…

经典逝去,三方确认:iPhone15系列取消静音拨片,改用Action按钮

苹果公司将在9月13日凌晨1点举办秋季特别活动&#xff0c;这次活动将推出许多新产品&#xff0c;其中之一备受关注的是iPhone 15系列。在数月前&#xff0c;关于iPhone 15系列机型的消息早已传出&#xff0c;而最值得一提的变化就是取消自2007年初代iPhone发布以来一直存在的静…

【大数据环境安装】虚拟机安装操作

虚拟机安装操作 创建虚拟机 添加linux的iso镜像文件 开启虚拟机, 进行安装 正在校验, 可直接选择esc退出, 或者等待一会也是OK的 直到出现以下界面,开始选择语言: 结束后 , 点击重启, 然后进入系统, 到此, 虚拟机搭建工作结束 登录, 进入系统

【YOLOv 剪枝 轻量化】融合YOLOv5s与通道剪枝算法的奶牛轻量化个体识别方法(英文版含中文翻译)

融合YOLOv5s与通道剪枝算法的奶牛轻量化个体识别方法 Light-weight recognition network for dairy cows based on the fusion of YOLOv5s and channel pruning algorithm 论文链接知网链接 DOI链接 引用格式&#xff1a; 许兴时&#xff0c;王云飞&#xff0c;华志新&#xf…

全球汽车安全气囊芯片总体规模分析

安全气囊系统是一种被动安全性的保护系统&#xff0c;它与座椅安全带配合使用&#xff0c;可以为乘员提供有效的防撞保护。在汽车相撞时&#xff0c;汽车安全气囊可使头部受伤率减少25%&#xff0c;面部受伤率减少80%左右。 汽车安全气囊芯片是整个系统的控制核心&#xff0c;并…

中秋节包装礼盒样机|素材帮帮站

今天小编来给大家发福利了。中秋节临近&#xff0c;对中秋节礼盒样机愁眉苦展的宝子们看过来。 我们为您精心准备了各种款式、各种风格的中秋节包装礼盒样机素材54款【PSD源文件】&#xff0c;让您轻松打造独一无二的中秋礼盒。 部分效果图如下&#xff1a; 还有更多的素材等…

负载均衡-ribbon源码解析

负载均衡-ribbon源码解析 1 LoadBalanced注解 /*** 基于ribbon调用服务及负载均衡* return*/ LoadBalanced Bean public RestTemplate restTemplate(){return new RestTemplate(); }Bean ConditionalOnMissingBean public RestTemplateCustomizer restTemplateCustomizer(fin…

利用尾部网红的力量:跨境卖家的海外市场营销秘诀

随着互联网的不断发展&#xff0c;海外跨境电商已经成为全球贸易的重要一环。与此同时&#xff0c;社交媒体的兴起也催生了大批的海外网红&#xff0c;他们的粉丝群体庞大&#xff0c;有着巨大的市场潜力。然而&#xff0c;大部分跨境卖家都会集中在热门网红身上&#xff0c;而…

冠达管理:多场学术会议重启 医药板块行情回暖

9月11日&#xff0c;A股医药板块全天强势领涨&#xff0c;主力资金净流入超越50亿元&#xff0c;申万医药生物指数收涨2.62%。细分赛道中&#xff0c;中药、制药、立异药、瘦身药等板块领涨。个股方面&#xff0c;常山药业、金凯生科、通化金马、灵康药业等个股涨超10%。 音讯…

【月度刷题计划同款】从区间 DP 到卡特兰数

题目描述 这是 LeetCode 上的 「96. 不同的二叉搜索树」 &#xff0c;难度为 「中等」。 Tag : 「树」、「二叉搜索树」、「动态规划」、「区间 DP」、「数学」、「卡特兰数」 给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种…

Windows11系统下配置JAVA环境变量

一、环境变量的配置 1、右键开始菜单按钮&#xff0c;点击【系统➡高级系统设置】 2、在弹出的系统属性界面点击环境变量 3、在弹出的“环境变量”框&#xff0c;中选择下方的系统变量&#xff0c;点击新建 4、在弹出的“新建系统变量”框中&#xff0c;输入变量名和变量值&am…

vue中v-model应用于表单元素

v-model应用于表单元素 常见的表单元素都可以用v-model绑定关联→快速获取或设置 表单元素的值它会根据控件类型自动选取正确的方法来更新元素 常见的表单元素&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8&…

RHCSA-VM-Linux安装虚拟机后的基础命令

1.代码命令 1.查看本机IP地址&#xff1a; ip addr 或者 ip a [foxbogon ~]$ ip addre [foxbogon ~]$ ip a 1&#xff1a;<Loopback,U,LOWER-UP> 为环回2网卡 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP>为虚拟机自身网卡 2.测试网络联通性&#xff1a; [f…

032:vue中三元运算, style、class、type、 event等多种场景示例

第032个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…

包装类和认识泛型

目录 一、包装类 1.1 基本数据类型和对应的包装类 1.2 装箱和拆箱 1.3 自动装箱和自动拆箱 二、泛型概念及引出 2.1 泛型概念 2.2 泛型引出 三、泛型类的使用 四、裸类型&#xff08;了解&#xff09; 五、泛型如何编译 5.1 擦除机制 5.2 为什么不能实例化泛型类型的数组 …

windows拷贝文件到WSL最快速的方法

windows拷贝文件到WSL最快速的方法 在WSL用 sudo ls /mnt/* 列出系统所有的挂载盘&#xff0c;可以看到windows系统的所有盘都列出来了 找到你需要拷贝的文件位置&#xff0c;然后使用 cp命令就可以了。例如我要拷贝h盘下面的gitlab备份文件去wsl&#xff0c;用下面的命令即可…

C语言经典100(49)--#if #ifdef和#ifndef的综合应用

目录 #if #endif #ifdef #ifnde 代码 运行结果 #if 通过下面这段小代码来分析一下&#xff1a; #define DEBUG 1 //首先定义一个宏 #if DEBUG printf("Value of i: %d\n", i); printf("Value of j: %d\n", j); #endif 在预处理过程中&a…

Spring(五):Spring Boot 的配置和日志

Spring Boot中的配置文件起到了非常重要的作用。在Spring Boot中&#xff0c;可以通过配置文件来配置应用程序的一系列属性&#xff0c;包括数据库连接、服务器端口号、日志级别等等。通过配置文件&#xff0c;可以方便地对应用程序进行配置管理和集中管理。另外&#xff0c;Sp…