首页 > 代码库 > 使用appium进行图案解锁

使用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

使用appium进行图案解锁