Skip to content

HttpRunner 的 UI 自动化扩展库,包括图片识别(OpenCV)、OCR 识别、辅助函数等

License

Notifications You must be signed in to change notification settings

httprunner/uixt

This branch is 7 commits ahead of electricbubble/gwda-ext-opencv:master.

Folders and files

NameName
Last commit message
Last commit date
Aug 26, 2022
Aug 27, 2022
Nov 19, 2020
Aug 26, 2022
Aug 27, 2022
Aug 27, 2022
Aug 27, 2022
Aug 27, 2022
Aug 27, 2022
Aug 27, 2022
Aug 27, 2022
Aug 26, 2022
Aug 26, 2022
Aug 27, 2022
Aug 27, 2022
Aug 27, 2022
Aug 27, 2022
Aug 27, 2022
Aug 27, 2022

Repository files navigation

gwda-ext

electricbubble/gwda 的扩展库,包括图片识别(OpenCV)、OCR 识别、辅助函数等。

安装

必须先安装好 OpenCV,安装步骤可参考 hybridgroup/gocv

go get github.com/debugtalk/gwda-ext

使用

package main

import (
	"fmt"
	. "github.com/electricbubble/gwda"
	gwdaExt "github.com/debugtalk/gwda-ext"
	"log"
)

func main() {
	driver, err := NewUSBDriver(nil)
	checkErr(err)

	driverExt, err := gwdaExt.Extend(driver, 0.95)
	checkErr(err, "扩展 driver ,指定匹配阀值为 95%(在不修改或者使用 `OnlyOnceThreshold` 的情况下)")

	pathZero := "/Users/hero/Documents/temp/2020-05/opencv/flag0.png"
	err = driverExt.Tap(pathZero)
	checkErr(err, "找到图片(匹配度 >= 95%)后点击(默认 x 向右👉偏移 50%, y 向下👇偏移 50%)")

	err = driverExt.TapOffset(pathZero, 0.1, 0.1)
	checkErr(err, "找到图片(匹配度 >= 95%)后点击( x 向右👉偏移 10%, y 向下👇偏移 10%)")

	pathSeven := "/Users/hero/Documents/temp/2020-05/opencv/flag7.png"
	err = driverExt.TapOffset(pathSeven, 0.2, 0.8)
	checkErr(err, "找到图片(匹配度 >= 95%)后点击( x 向右👉偏移 20%, y 向下👇偏移 80%)")

	err = driverExt.DoubleTap(pathSeven)
	checkErr(err, "找到图片(匹配度 >= 95%)后双击(默认 x 向右👉偏移 50%, y 向下👇偏移 50%)")

	err = driverExt.DoubleTapOffset(pathSeven, 0.1, 0.25)
	checkErr(err, "找到图片(匹配度 >= 95%)后点击( x 向右👉偏移 10%, y 向下👇偏移 25%)")

	pathSlash := "/Users/hero/Documents/temp/2020-05/opencv/flag.png"
	err = driverExt.SwipeDown(pathSlash, 0.5)
	checkErr(err, "向下👇滑动,滑动距离为图片高度的 50%(默认从图片的正中间顶部向底部滑动,默认滑动距离为 1个 图片高度)")

	err = driverExt.SwipeDownOffset(pathSlash, 0.25, 1)
	checkErr(err, "向下👇滑动( x 向右👉偏移 25%, y 向下👇偏移 100% )")

	err = driverExt.SwipeDownOffset(pathSlash, -0.25, -0.8)
	checkErr(err, "向下👇滑动( x 向左👈偏移 25%, y 向上👆偏移 80% )")

	// WDADebug = true

	// 撤销 3次 操作
	undo(driverExt, 3)

	err = driverExt.SwipeUp(pathSlash, 0.5)
	checkErr(err, "向上👆滑动,滑动距离为图片高度的 50%(默认从图片的正中间底部向顶部滑动,默认滑动距离为 1个 图片高度)")

	err = driverExt.SwipeUpOffset(pathSlash, 0.9, 0.6)
	checkErr(err, "向上👆滑动(起始滑动点 x 向右👉偏移 90%, y 向下👇偏移 60% )")

	err = driverExt.OnlyOnceThreshold(0.92).SwipeUpOffset(pathSlash, -0.1, -0.05, 0.3)
	checkErr(err, "向上👆滑动,临时指定匹配阀值为 92%,滑动距离为图片高度的 30%(起始滑动点 x 向左👈偏移 10%, y 向上👆偏移 5% )")

	// 撤销 3次 操作
	undo(driverExt, 3)

	err = driverExt.SwipeLeft(pathSlash, 0.5)
	checkErr(err, "向左👈滑动,滑动距离为图片宽度的 50%(默认从图片的正中间右侧向左侧滑动,默认滑动距离为 1个 图片宽度)")

	err = driverExt.SwipeLeftOffset(pathSlash, 0.5, 0.55)
	checkErr(err, "向左👈滑动(起始滑动点 x 向右👉偏移 50%, y 向下👇偏移 55% )")

	err = driverExt.OnlyOnceThreshold(0.92).SwipeLeftOffset(pathSlash, -0.15, -0.25)
	checkErr(err, "向左👈滑动,临时指定匹配阀值为 92%(起始滑动点 x 向左👈偏移 15%, y 向上👆偏移 25% )")

	// driverExt.Debug(gwdaExt.DmNotMatch)

	// 撤销 3次 操作
	undo(driverExt, 3)

	err = driverExt.SwipeRight(pathSlash, 0.5)
	checkErr(err, "向右👉滑动,滑动距离为图片宽度的 50%(默认从图片的正中间左侧向右侧滑动,默认滑动距离为 1个 图片宽度)")

	err = driverExt.SwipeRightOffset(pathSlash, 0.5, 0.6)
	checkErr(err, "向右👉滑动(起始滑动点 x 向右👉偏移 50%, y 向下👇偏移 60% )")

	err = driverExt.OnlyOnceThreshold(0.90).SwipeRightOffset(pathSlash, -0.25, -0.05)
	checkErr(err, "向右👉滑动(起始滑动点 x 向左👈偏移 25%, y 向上👆偏移 5% )")

	// 撤销 10次 操作
	undo(driverExt, 10)
}

func undo(dExt *gwdaExt.DriverExt, n int) {
	pathUndo := "/Users/hero/Documents/temp/2020-05/opencv/undo.png"
	err := dExt.TapWithNumber(pathUndo, n)
	checkErr(err, fmt.Sprintf("撤销 %d次 操作\n", n))
}

func checkErr(err error, msg ...string) {
	if err != nil {
		log.Fatalln(msg, err)
	}
}

示例代码运行预览

gwda-ext-opencv

手势密码

首先是抠出一张手势密码中的触摸点小图,如下图被圈中的其中一个

gesture-password

GesturePassword 函数会通过这个 触摸点小图 找到全部,并根据上图所示的进行排序。

比如,这里需要一个 M 的手势密码,根据排序后的索引值,我们只需要传入 []int{6, 3, 0, 4, 2, 5, 8} 可参考 gesture_test.go

这里就不放预览图了,觉得有兴趣的可以自己尝试下,这里也只是一个简单的应用方向。

About

HttpRunner 的 UI 自动化扩展库,包括图片识别(OpenCV)、OCR 识别、辅助函数等

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Languages

  • Go 100.0%