ToB企服应用市场:ToB评测及商务社交产业平台

标题: Python写UI自动化--playwright(点击操纵) [打印本页]

作者: 丝    时间: 2024-7-30 23:37
标题: Python写UI自动化--playwright(点击操纵)
本篇介绍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 键并点击单元格以选择多个项。
  1. from playwright.sync_api import Page
  2. def test_pw_click(page: Page):
  3.     page.goto(url='https://www.baidu.com')
  4.     page.locator('//input[@name="wd"]').fill("日历")
  5.     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 参数。这对于需要点击元素内的某个图标或按钮的情况很有用。例如,如果有一个带有下拉箭头的按钮,可能需要点击箭头而不是整个按钮区域。
  1. from playwright.sync_api import Page
  2. def test_pw_click(page: Page):
  3.     page.goto(url='https://www.baidu.com')
  4.     page.locator('//input[@name="wd"]').fill("翻译")
  5.     page.get_by_text('百度一下').click()
  6.      # 获取元素位置
  7.     page.get_by_text('百度首页').bounding_box()
  8.      # 返回示例:{'x': 1082, 'y': 24, 'width': 52, 'height': 24}
  9.      # 表示这个元素在整个界面位置,以及元素本身的宽和高范围大小
  10.      # 点击元素的特定位置
  11.     page.click("#my-button", position={"x": 10, "y": 10})
复制代码
3. button(可选)

可以模仿左键右键中间键点击
   类型: "left" | "right" | "middle"
形貌: 指定要使用的鼠标按钮。默认值为 "left"。
使用场景: 需要模仿右键点击或其他类型的鼠标按钮点击时使用。例如模仿右键点击来打开上下文菜单。
  1. from playwright.sync_api import Page
  2. def test_pw_click(page: Page):
  3.     page.goto(url='https://www.baidu.com')
  4.     page.locator('//input[@name="wd"]').fill("翻译")
  5.     page.get_by_text('百度一下').click()
  6.    
  7.     page.get_by_text('百度首页').click(button="right") #left左键 right右键 middle中键
复制代码
4. click_count(可选)

传点击次数,和delay参数结合使用
   类型: number
形貌: 指定点击次数。默认为 1,可以设置为 2 来模仿双击。
使用场景: 需要模仿双击或其他次数的点击时使用。例如,双击文件列表中的文件来打开它。
  1. page.locator('//input[@id="su"]').click(click_count=3,delay=3_000)
复制代码
双击另有另一个方便的方法dblclick(),括号中的参数跟click()类似:
  1. page.locator('//input[@id="su"]').dblclick()
复制代码
5. delay

   类型: number
形貌: 设置两次点击之间的耽误时间(毫秒)。默认为 0。
使用场景: 需要模仿用户点击时的天然耽误,比如在双击之间参加短暂的停顿,以模仿真实的用户行为。
  6. timeout(可选)

传入超时时间
   类型: number
形貌: 设置最大等待时间(毫秒),超过此时间后将抛出超时错误。默认为 30000 毫秒(30 秒)。
使用场景: 当你需要限定等待元素变得可点击的时间。例如,在等待元素出现时,你可能不想等待太长时间。
  1. page.get_by_text('#要点击的元素').click(timeout=1_000) #超时时间,默认30s
复制代码
7. force=True(可选)

表现playwright auto-waiting机制中,当设置 force=True 时,即使元素被其他元素遮挡,Playwright 也会尝试强制点击该元素。这意味着即使有对话框或其他元素遮挡了目标元素,Playwright 也会尝试直接点击目标元素。
   类型: bool
形貌: 如果为 true,则强制点击元素,即使它被遮挡。默认为 false。
使用场景: 当元素被其他元素遮挡时,仍然需要点击它。例如,如果一个按钮被一个模态对话框遮挡,可能需要强制点击该按钮。
  1. page.get_by_text('#需要点击的元素').click(force=True)
复制代码
8. trial=True(可选)

表现只举行playwright auto-waiting的等待而不举行click操纵
   类型: bool
形貌: 如果为 true,则不执行现实的点击操纵,而是仅尝试查找元素并检查是否可以点击。默认为 false。
使用场景: 需要验证元素是否可以点击,但不执行现实的点击操纵。例如,在测试准备阶段,你可能需要检查页面上的所有按钮是否可点击。
  1. page.get_by_text('#要点击的元素').click(trial=True) #点击前检查元素
复制代码
9. no_wait_after(可选)

表现,一样平常情况下,如果click操纵触发了一个导航变乱,那么pw会等待导航结束,但是这样可能导致click不停未结束而失败。这个就是为了制止这种情况发生。
   类型: bool
形貌: 如果为 true,则点击后不等待页面导航或资源加载完成。默认为 false。
使用场景: 当点击操纵不会导致页面重新加载,而只是触发一些异步操纵(如 AJAX 请求)时。例如,如果点击按钮只是更新页面的一部门内容而不革新整个页面。
  1. 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()方法的这些参数,我们可以根据需求精确地控制点击行为,使自动化测试更加可靠和高效。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4