使用appium进行图案解锁

对于应用中图案解锁的功能,使用appium可以很好的完成这个功能。

这里以锁屏时图案解锁为例:

图案设置为:

在该锁屏界面解锁:

获取图案中9个点的坐标时,可以使用sdk tools目录下的hierarchyviewer工具获取。

下面贴上图案解锁的代码:

package com.xuxu.autotest;

import java.net.URL;

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.TouchAction;
import io.appium.java_client.android.AndroidDriver;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.remote.DesiredCapabilities;

public class UnlockTest {
	private AppiumDriver driver;

	public UnlockTest() {
	}

	@Before
	public void setUp() throws Exception {
		DesiredCapabilities capabilities = new DesiredCapabilities();
		capabilities.setCapability("deviceName", "Android Emulator");
		capabilities.setCapability("platformVersion", "4.4");
		capabilities.setCapability("platformName", "Android");
		capabilities.setCapability("appPackage", "com.android.settings");
		capabilities.setCapability("appActivity", ".Settings");

		driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),
				capabilities);
		sleep(2000);
	}

	@After
	public void tearDown() throws Exception {
		driver.quit();
	}

	@Test
	public void test() {

		driver.sendKeyEvent(26); // 按power键锁屏
		sleep(3000);
		driver.sendKeyEvent(26); // 按power键点亮屏幕

		driver.tap(1, 540, 960, 500); // 触摸屏幕中间,显示图案解锁框
		sleep(2000);

		//图案解锁
		TouchAction action = new TouchAction(driver);
		action.press(215, 870).moveTo(540, 870).moveTo(862, 870)
				.moveTo(540, 1195).moveTo(215, 1195).moveTo(215, 1518)
				.moveTo(540, 1518).moveTo(862, 1518).moveTo(862, 1195)
				.release().perform();

	}

	private void sleep(int i) {
		try {
			Thread.sleep(i);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}

最后附上在执行脚本的过程中,使用screenrecord录制的解锁过程的视频:

unlok.mp4

时间: 2024-08-01 15:53:17

使用appium进行图案解锁的相关文章

关于三星手机SPH-D710图案解锁过多导致手机锁死的问题

前一段时间由于手机充电被小孩子玩,导致屏幕锁死的状态,然后出现要用谷歌帐户来解屏,但是试了后还是不行,不是很懂这些东西,以为坏了.最后到网上查了查,说要重新刷机什么的,权威的方法就是要恢复出厂设置,于是在网上找了一些方法试,最后就可以了. 首先按住手机的音量加和HOME键还要按住关机键(要保证你的手机处于关机状态),然后就会出现很多行英文模式,用音量键选择第一个WIPE开头的,按开关机键确认,会出现很多个no,但是只有一个yes,用音量键选择那个yes,再按home键确认:再选择第二个wipe开

手机9宫格图案解锁方法总数计算

图案解锁是智能手机一项常用的功能.你需要在3x3的点阵上,从任意一个点开始,反复移动到一个尚未经过的"相邻"的点.这些划过的点所组成的有向折线,如果与预设的折线在图案.方向上都一致,那么手机将解锁.两个点相邻当且仅当以这两个点为端点的线段上不存在尚未经过的点.此外,这条折线还需要至少经过4个点. 有些人可能有和我一样的疑问,在这小小的9个点中,图案密码总共有多少种形式呢?今天我就使用深度优先搜索的方法解决这个问题.具体c++代码如下: #include<iostream>

Android中图案解锁的设计原理和实现过程

Android中图案解锁 首先要理解图案的实现原理,上一张图: 由上图,可以看出,图案中手势的记录是1-9或0-8的,保存的顺序就是密码,当然有些是可以重复的,为了安全,肯定不能直接存原顺序,一定是要加密处理的,如MD5或Hash散列. (作者: a day a better) 图案解锁中自定义View,是其中最为关键的一部分.下面是自定义LockView的实现,里面的注释写的很详细了. <span style="font-size:14px;">package com.e

Android Lock Pattern 图案解锁

参考链接:http://www.cnblogs.com/dyingbleed/archive/2012/12/03/2800007.html http://blog.csdn.net/way_ping_li/article/details/8925936 Android Lock Pattern 图案解锁,码迷,mamicode.com

[Android UI]android-lockpattern图案解锁的实现分享

本文属于学习分享,如有雷同纯属巧合 怎么会有雷同呢? 本着技术分享,学习互助的原则,我在此分享一款已经开源的android 图案解锁的实现. 项目地址:https://code.google.com/p/android-lockpattern/  (考虑到要翻墙,才写了这个demo) 它也是参考了android自带的图案锁的源码而修改的,可以作为app来调用. 先看看实现效果吧! 开始说说这个demo的结构吧,首先下载源码,把android-lockpattern作为lib来使用 1.创建dem

图案解锁

#import <UIKit/UIKit.h> #import "CXLockView.h" @interface CXLockViewController : UIViewController @property (assign, nonatomic) LockMode mode; @end #import "CXLockViewController.h" #define deviceWidth [UIScreen mainScreen].bounds

手机的九宫格图案解锁总共能绘出多少种图案?(hiho模拟面试题2 - google在线技术笔试模拟)

滑动解锁是智能手机一项常用的功能.你需要在3x3的点阵上,从任意一个点开始,反复移动到一个尚未经过的"相邻"的点.这些划过的点所组成的有向折线,如果与预设的折线在图案.方向上都一致,那么手机将解锁.两个点相邻当且仅当以这两个点为端点的线段上不存在尚未经过的点.此外,这条折线还需要至少经过4个点. 为了描述方便,我们给这9个点从上到下.从左到右依次编号1-9.那么1->2->3是不合法的,因为长度不足.1->3->2->4也是合不法的,因为1->3穿过

解决图案解锁问题

1.输入错误次数超过5次后,倒计时到1秒停留时间太长 2.有时无30S提示输入界面会出现几次可输入的情况 3.锁屏界面画错5次图案,点按提示框中的OK后,界面倒计时显示 剩余解锁秒数,按键锁屏半分钟后唤醒,界面还是显示之前锁屏时的秒数 4.锁屏界面画错5次图案,点按提示框中的OK后,有时无30s倒计时提示只显示wrong pattern,立刻可以继续进行解锁操作 碰到这类情况的基本上是在reset的时候没有处理好 1.修改路径:frameworks/base/packages/Keyguard/

Appium九宫格滑动解锁

1.适配各种机型,首先获取整个解锁元素的坐标 2.代码实现 WebElement lockPattern = driver.findElement(By.id("com.android.settings:id/lockPattern")); int x = lockPattern.getLocation().getX(); int y = lockPattern.getLocation().getY(); int w = lockPattern.getSize().getWidth()