首页 > 编程语言 >Python写UI自动化--playwright(点击操作)

Python写UI自动化--playwright(点击操作)

时间:2024-07-31 18:27:50浏览次数:10  
标签:playwright Python text 元素 page -- 点击 True click

本篇介绍playwright点击操作,click()方法的常用参数

目录

0. selector (必需)

1. modifiers(可选)

2. position(可选)

3. button(可选)

4. click_count(可选)

5. delay

6. timeout(可选)

7. force=True(可选)

8. trial=True(可选)

9. no_wait_after(可选)

注意事项


0. selector (必需)

类型: string
描述: CSS 选择器或 XPath 表达式,用于定位要点击的元素。
是必须提供的参数,用于确定要点击的元素。

1. modifiers(可选)

传入一个列表,其中是键盘的按键操作,比如"Ctrl","Alt","Shift","win键"等

类型: Array<string>
描述: 一个字符串数组,用于指定要按下的修饰键。可用的修饰键包括 "Shift", "Control", "Alt", "Meta"(代表 Command 键或 Windows 键)。


使用场景
模拟组合键点击:如果需要模拟用户同时按下 Shift 或 Control 键并点击元素,可以使用 modifiers 参数。例如,模拟用户按下 Ctrl 键并点击链接以在新标签页中打开链接。
模拟特殊操作:在某些情况下,需要模拟特殊的键盘操作。例如,在表格中按下 Ctrl 键并点击单元格以选择多个项。

from playwright.sync_api import Page
def test_pw_click(page: Page):
    page.goto(url='https://www.baidu.com')
    page.locator('//input[@name="wd"]').fill("日历")
    page.get_by_text('百度一下').click(modifiers=["Control"]) #Control、Alt、Shift、Meta

2. position(可选)

传入一个字典,{"x":10, "y": 20 },表示点击位置距离元素左上角的偏移量。可以用bounding_box()方法先查看这个元素的width和height,再确定自己点击位置要偏移多少,偏移量不能超过这个元素的宽高范围。当被操作元素被遮罩时,虽然playwright会自动寻找可点击位置,但是这样显示指定点击位置会更精确一些

类型: { x: number, y: number }
描述: 指定相对于元素左上角的点击位置。x 和 y 分别表示水平和垂直偏移量。
使用场景: 需要在元素内部的特定位置点击时,可以使用 position 参数。这对于需要点击元素内的某个图标或按钮的情况很有用。例如,如果有一个带有下拉箭头的按钮,可能需要点击箭头而不是整个按钮区域。

from playwright.sync_api import Page
def test_pw_click(page: Page):
    page.goto(url='https://www.baidu.com')
    page.locator('//input[@name="wd"]').fill("翻译")
    page.get_by_text('百度一下').click()

     # 获取元素位置
    page.get_by_text('百度首页').bounding_box()
     # 返回示例:{'x': 1082, 'y': 24, 'width': 52, 'height': 24}
     # 表示这个元素在整个界面位置,以及元素本身的宽和高范围大小

     # 点击元素的特定位置
    page.click("#my-button", position={"x": 10, "y": 10})

3. button(可选)

可以模拟左键右键中间键点击

类型: "left" | "right" | "middle"
描述: 指定要使用的鼠标按钮。默认值为 "left"。
使用场景: 需要模拟右键点击或其他类型的鼠标按钮点击时使用。例如模拟右键点击来打开上下文菜单。

from playwright.sync_api import Page
def test_pw_click(page: Page):
    page.goto(url='https://www.baidu.com')
    page.locator('//input[@name="wd"]').fill("翻译")
    page.get_by_text('百度一下').click()
    
    page.get_by_text('百度首页').click(button="right") #left左键 right右键 middle中键

4. click_count(可选)

传点击次数,和delay参数结合使用

类型: number
描述: 指定点击次数。默认为 1,可以设置为 2 来模拟双击。
使用场景: 需要模拟双击或其他次数的点击时使用。例如,双击文件列表中的文件来打开它。

page.locator('//input[@id="su"]').click(click_count=3,delay=3_000)

双击还有另一个方便的方法dblclick(),括号中的参数跟click()类似:

page.locator('//input[@id="su"]').dblclick()

5. delay

类型: number
描述: 设置两次点击之间的延迟时间(毫秒)。默认为 0。
使用场景: 需要模拟用户点击时的自然延迟,比如在双击之间加入短暂的停顿,以模仿真实的用户行为。

6. timeout(可选)

传入超时时间

类型: number
描述: 设置最大等待时间(毫秒),超过此时间后将抛出超时错误。默认为 30000 毫秒(30 秒)。
使用场景: 当你需要限制等待元素变得可点击的时间。例如,在等待元素出现时,你可能不想等待太长时间。

page.get_by_text('#要点击的元素').click(timeout=1_000) #超时时间,默认30s

7. force=True(可选)

表示playwright auto-waiting机制中,当设置 force=True 时,即使元素被其他元素遮挡,Playwright 也会尝试强制点击该元素。这意味着即使有对话框或其他元素遮挡了目标元素,Playwright 也会尝试直接点击目标元素。

类型: bool
描述: 如果为 true,则强制点击元素,即使它被遮挡。默认为 false。
使用场景: 当元素被其他元素遮挡时,仍然需要点击它。例如,如果一个按钮被一个模态对话框遮挡,可能需要强制点击该按钮。

page.get_by_text('#需要点击的元素').click(force=True)

8. trial=True(可选)

表示只进行playwright auto-waiting的等待而不进行click操作

类型: bool
描述: 如果为 true,则不执行实际的点击操作,而是仅尝试查找元素并检查是否可以点击。默认为 false。
使用场景: 需要验证元素是否可以点击,但不执行实际的点击操作。例如,在测试准备阶段,你可能需要检查页面上的所有按钮是否可点击。

page.get_by_text('#要点击的元素').click(trial=True) #点击前检查元素

9. no_wait_after(可选)

表示,一般情况下,如果click操作触发了一个导航事件,那么pw会等待导航结束,但是这样可能导致click一直未结束而失败。这个就是为了避免这种情况发生。

类型: bool
描述: 如果为 true,则点击后不等待页面导航或资源加载完成。默认为 false。
使用场景: 当点击操作不会导致页面重新加载,而只是触发一些异步操作(如 AJAX 请求)时。例如,如果点击按钮只是更新页面的一部分内容而不刷新整个页面。

page.get_by_text('#要点击的元素').click(no_wait_after=True) #点击后不等待页面加载

总结一下,playwright的click操作有这么几步:

1.Auto-waiting机制,自动等待元素到可以被成功点击,除非设置了force=True

2.把元素滑动到可以被点击的地方

3.合并modifiers中的按键进行点击操作,除非设置了trial=True

4.等待可能的导航结束,除非设置了no_wait_after=True

注意事项

在使用 click 方法时,确保元素是可见的并且在页面上是可交互的。
使用 position 参数时,请确保指定的坐标位于元素的有效范围内。
使用 noWaitAfter 参数时要注意,如果不等待页面加载完成,可能会影响后续的测试步骤。
使用 timeout 参数时要合理设置,过短的超时时间可能导致测试失败,过长则可能降低测试效率。

熟悉click()方法的这些参数,我们可以根据需求精确地控制点击行为,使自动化测试更加可靠和高效。

标签:playwright,Python,text,元素,page,--,点击,True,click
From: https://blog.csdn.net/qq_52758588/article/details/140689176

相关文章

  • 华为交换机堆叠技术
    什么是堆叠?堆叠是指将多台支持堆叠特性的交换机通过堆叠线缆连接在一起,从逻辑上虚拟成一台交换设备,作为一个整体参与数据转发。堆叠是目前广泛应用的一种横向虚拟化技术,具有提高可靠性、扩展端口数量、增大带宽、简化组网等作用。相关文章推荐 点击查看: 华为交换机组建堆......
  • 懂个锤子Vue 自定义指定、插槽:
    Vue自定义指定、插槽......
  • 24.07.31
    day21.基础知识1.1计算机结构1.2什么是程序广义上讲,为了实现一个特定的目标而预先设计的一组可操作的工作步骤,称之为一个程序。程序就是系统可以识别的一组有序的指令。存储在磁盘上,被加载到内存中执行。1.3数据定义:送入计算机的数字,字母,符号等信息必须转......
  • Web : EL表达式 -15
    EL表达式概述EL全名为ExpressionLanguage,用来替代<%= %>脚本表达式。基本结构为${表达式}。获取数据获取常量<h1>获取常量</h1>${123}${123.32}${"abc"}${true}获取变量el会自动从四大作用域中搜寻域属性来使用如果找不到什么都不输出<h1>获取变量</h......
  • 【足球走地软件】走地数据分析预测【大模型篇】走地预测软件实战分享
    了解什么是走地数据?走地数据分析,在足球赛事的上下文中,是一种针对正在进行中的比赛进行实时数据分析的方法。这种方法主要用于预测比赛中的某些结果或趋势,如总进球数、比分变化、球队表现等。在足球走地数据分析中,大小球策略是一种非常实用的投注方式。它主要预测的是一场......
  • 24.07.30
    C语言基础day11.linux基础知识1.1Linux操作系统优点: 1.开源源代码可见 2.免费 3.安全性 4.可以软件实现剪裁 5.效率 6.Linux的文件组织模式犹如一颗倒置的树只有一个根目录(/) windows: 1.GUI界面 2.软件生态丰富1.2Linux文件系统Linux的文件组织......
  • 方天云智慧平台系统 Upload.ashx 任意文件上传漏洞复现
    0x01产品简介方天云智慧平台系统,作为方天科技公司的重要产品,是一款面向企业全流程的业务管理功能平台,集成了ERP(企业资源规划)、MES(车间执行系统)、APS(先进规划与排程)、PLM(产品生命周期)、CRM(客户关系管理)等多种功能模块,旨在通过云端服务为企业提供数字化、智能化的管理解决方案......
  • 方天云智慧平台系统 GetCustomerLinkman SQL注入漏洞复现
    0x01产品简介方天云智慧平台系统,作为方天科技公司的重要产品,是一款面向企业全流程的业务管理功能平台,集成了ERP(企业资源规划)、MES(车间执行系统)、APS(先进规划与排程)、PLM(产品生命周期)、CRM(客户关系管理)等多种功能模块,旨在通过云端服务为企业提供数字化、智能化的管理解决方案......
  • 技术干货|如何轻松实现小型化超构表面天线的特征模式分析和设计?
    摘要无线通信技术的迅速发展对天线小型化提出了苛刻的要求。本文介绍了一种小型化超构表面天线的设计,该天线由四层等间距平行放置的电磁超构表面组成,每层超构表面由3×3的方形贴片组成的阵列组成。文章基于Feko对该天线进行了特征模式分析(CMA),并通过特征模式的近、远场和表面......
  • 新能源车浪潮来袭,同时存在高压低压系统,如何准确进行高低压布线间距EMC分析?
    摘要随着车辆电气化水平的逐步提升,电气零部件布局和布线面临着前所未有的挑战,在不断的压缩电气零部件间间距后,EMC性能成为非常关键的性能指标。特别是对于新能源车型,同时存在高压和低压系统,高低压耦合若处理的不好则EMC问题会频发。本文重点对新能源车高低压布线间距进行EM......