23新一代自动化测试神器playwright+python系列课程_playwright模拟鼠标操作_拖拽1

playwright模拟鼠标操作_拖拽1

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

模拟鼠标拖拽一定距离。

应用的方法

获取元素位置及大小:ele.bounding_box()

鼠标移动:page.mouse.move()

按下鼠标:page.mouse.down()

释放鼠标: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()

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

posted @ 2024-03-21 11:01  测试_老姜  阅读(39)  评论(0)    收藏  举报