playwright模拟鼠标操作_拖拽1

现在很多网站登录时都有滑块拖动验证功能,在写自动化测试脚本时就需要在脚本中实现拖动滑块的过程,playwright提供了多种实现元素的拖拽和释放的方法,我们先看第一种。

模拟鼠标拖拽一定距离。

应用的方法:
1、获取元素位置及大小:ele.bounding_box()
2、按下鼠标:page.mouse.down()
3、鼠标移动:page.mouse.move()
4、释放鼠标:page.mouse.up()
使用思路:
使用locator定位到要拖动滑块元素,如元素名叫ele
获取元素ele的bounding_box含4分属性值:x,y,width,height
把鼠标移动到元素ele的中心点,中心点位置为:x+width/2,y+height/2
按下鼠标
计算出要移动的下一个位置,以长条滑块为例,拖动到长条头部实现解锁,那x的位置应该为x+width/2 + 某个固定值(足够大就好)
执行移动操作,下一个位置坐标为:x+width/2 + 某个固定值,y+height/2
释放鼠标

以拖动登录页面的弹窗为例,来看一下使用过程。
在这里插入图片描述

上图是移动前,注意弹窗相较于登录按钮的位置
实践代码:

 '''
 author: 测试-老姜   交流微信/QQ:349940839
 欢迎添加微信或QQ,加入学习群共同学习交流。
#QQ交流群号:877498247
#西安的朋友欢迎当面交流。
 '''

from playwright.sync_api import Playwright, sync_playwright, expect
playwright = sync_playwright().start()
browser = playwright.chromium.launch(headless=False, args=['--start-maximized']) #默认无头模式,设置浏览器最大化
context = browser.new_context(no_viewport=True) # 创建上下文,相当浏览器于实例化,即打开浏览器
page = context.new_page() # 打开一个新标签页
page.goto("http://127.0.0.1:8080/oa/") # 打开网址
page.wait_for_timeout(2000)
page.locator("input[name=\"loginId\"]").fill("sup")
page.get_by_role("button", name="登录").click() #点击登录后会弹出提示信息框
page.wait_for_timeout(2000)
title = page.locator('.d-title') # 定位到要拖动的元素
box = title.bounding_box() # 获取元素位置及大小
print(box)
page.mouse.move(box['x']+box['width']/2,box['y']+box[ 'height']/2) #鼠标移动到元素中间位置
page.mouse.down() #按下鼠标
page.mouse.move(box['x']+box['width']/2+200,box['y']+box[ 'height']/2+200) #移动鼠标向右下移动200
page.mouse.up()#松开鼠标
page.wait_for_timeout(5000)
context.close()
browser.close()
playwright.stop()

下图时移动后的截图,注意看弹窗移动后的位置

在这里插入图片描述

Logo

一站式 AI 云服务平台

更多推荐