Appium九宫格滑动解锁研究

本文探讨了一种九宫格滑动解锁的实现方法,该方法适用于九宫格显示在一个视图中的情况。通过获取元素view的起始坐标和宽高,计算出1到9个点的屏幕坐标,然后利用Appium的touchaction类进行滑动操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       九宫格滑动解锁,目前发现有两种一种是每个可点的方格都是一个imageview,九宫格则对应有9个imageview,此类解锁已有前人研究解决了,可以参照tobecrazy的博客

今天我要说的是另一种,九宫格显示在一个view中,类似下图所示:


对于此类滑动解锁,只能使用坐标点来滑动了,要使用坐标点九必须得到1~9这几个点在屏幕上的相对位置,要得到相对位置首先要得到元素view的起始坐标(就是左上角的x和y坐标点),然后再获取到元素的宽和高,由此可以得到1到9的这9个坐标点的x和y坐标,再利用touchaction类的方法进行封装即可,具体实现如下:


	/**
	 * 针对应用的九宫格滑动解锁,每个滑动点么有独立的元素,只能通过相对的坐标点进行滑动
	 * @param driver
	 * @param element
	 */
	public void unlockApp(AppiumDriver driver,WebElement element) throws Exception{
		TouchAction ta=new TouchAction(driver);
		//元素的起始x和y坐标
		int x=element.getLocation().getX();
		int y=element.getLocation().getY();
		//元素的宽和高
		int width=element.getSize().getWidth();
		int height=element.getSize().getHeight();
		//九宫格图案,对应的1-9个数字的位置
		int num1x=x+width/4;
		int num1y=y+height/4;
		int num4x=num1x;
		int num4y=y+height/2;
		int num7x=num1x;
		int num7y=y+height*3/4;
		int num2x=x+width/2;
		int num2y=y+height/4;
		int num5x=num2x;
		int num5y=y+height/2;
		int num8x=num2x;
		int num8y=y+height*3/4;
		int num3x=x+width*3/4;
		int num3y=y+height/4;
		int num6x=num3x;
		int num6y=y+height/2;
		int num9x=num3x;
		int num9y=y+height*3/4;
		//moveTo(x,y)滑动时需要提供相对于press坐标点的相对位置,按住一个点后,如果向左或向右滑动那么x坐标为元素宽度的1/4,y坐标为0,相对坐标值为正数时向右滑动,为负数时向左滑动
		//上下滑动时,x相对坐标为0,y的相对坐标为高度的height/4,相对坐标值为正数时向下滑动,为负数时向上滑动
		/*Z字形解锁图案*/
		ta.press(num1x, num1y).waitAction(500).moveTo(width/4, 0).moveTo(width/4, 0).moveTo(-width/4, height/4).moveTo(-width/4, height/4).moveTo(width/4, 0).moveTo(width/4, 0).release().perform();
		/*7字形解锁图案*/
		ta.press(num1x, num1y).waitAction(500).moveTo(width/4, 0).moveTo(width/4, 0).moveTo(0, height/4).moveTo(0, height/4).release().perform();
	}


滑动解锁效果图:

  

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值