7 changed files with 5491 additions and 121 deletions
File diff suppressed because it is too large
@ -1,118 +1,130 @@ |
|||||
import { DPEvent } from './event'; |
import { clickForce } from '../lib/utils'; |
||||
|
import { DPEvent } from './event'; |
||||
type DPStarterEvents = { |
|
||||
over: () => DPTask; |
type DPStarterEvents = { |
||||
exit: () => void; |
over: () => DPTask; |
||||
}; |
exit: () => void; |
||||
|
}; |
||||
export abstract class DPStarter extends DPEvent<DPStarterEvents> { |
|
||||
private _tasks: DPTask[] = []; |
export abstract class DPStarter extends DPEvent<DPStarterEvents> { |
||||
|
private _tasks: DPTask[] = []; |
||||
get tasks() { |
|
||||
return this._tasks; |
get tasks() { |
||||
} |
return this._tasks; |
||||
|
} |
||||
init() { |
|
||||
console.log('init'); |
init() { |
||||
this.doInit(); |
console.log('init'); |
||||
} |
const texts = className('android.widget.TextView') |
||||
|
.find() |
||||
abstract doInit(): void; |
.map((item) => item.text()); |
||||
|
console.log(texts); |
||||
start() { |
|
||||
console.log('start'); |
if (texts.includes('启动应用')) { |
||||
this.on('over', (task: DPTask) => { |
console.log('启动应用'); |
||||
const index = this._tasks.indexOf(task); |
|
||||
if (index < this._tasks.length - 1) { |
clickForce(id('button1').findOne()); |
||||
this._tasks[index + 1].start(); |
} |
||||
} |
this.doInit(); |
||||
|
} |
||||
if (index === this._tasks.length - 1) { |
|
||||
this.emit('exit'); |
abstract doInit(): void; |
||||
} |
|
||||
|
start() { |
||||
task.removeAllListeners(); |
console.log('start'); |
||||
this.removeTask(task); |
this.init(); |
||||
}); |
this.on('over', (task: DPTask) => { |
||||
} |
const index = this._tasks.indexOf(task); |
||||
|
if (index < this._tasks.length - 1) { |
||||
addTask(task: DPTask) { |
this._tasks[index + 1].start(); |
||||
this._tasks.push(task); |
} |
||||
} |
|
||||
|
if (index === this._tasks.length - 1) { |
||||
removeTask(task: DPTask) { |
this.emit('exit'); |
||||
const index = this._tasks.indexOf(task); |
} |
||||
if (index >= 0) { |
|
||||
this._tasks.splice(index, 1); |
task.removeAllListeners(); |
||||
} |
this.removeTask(task); |
||||
} |
}); |
||||
|
} |
||||
clearTasks() { |
|
||||
this._tasks = []; |
addTask(task: DPTask) { |
||||
} |
this._tasks.push(task); |
||||
} |
} |
||||
|
|
||||
export enum TaskStatus { |
removeTask(task: DPTask) { |
||||
Init = 'init', |
const index = this._tasks.indexOf(task); |
||||
Running = 'running', |
if (index >= 0) { |
||||
Paused = 'paused', |
this._tasks.splice(index, 1); |
||||
Stopped = 'stopped', |
} |
||||
Finished = 'finished' |
} |
||||
} |
|
||||
|
clearTasks() { |
||||
export class DPTask extends DPEvent { |
this._tasks = []; |
||||
// 任务状态
|
} |
||||
private _status: TaskStatus = TaskStatus.Init; |
} |
||||
|
|
||||
private owner: DPStarter; |
export enum TaskStatus { |
||||
|
Init = 'init', |
||||
get status() { |
Running = 'running', |
||||
return this._status; |
Paused = 'paused', |
||||
} |
Stopped = 'stopped', |
||||
|
Finished = 'finished' |
||||
set status(status: TaskStatus) { |
} |
||||
this._status = status; |
|
||||
(status === TaskStatus.Finished || status === TaskStatus.Stopped) && this.owner.emit('over', this); |
export class DPTask extends DPEvent { |
||||
} |
// 任务状态
|
||||
|
private _status: TaskStatus = TaskStatus.Init; |
||||
// 任务名称
|
|
||||
private _name = ''; |
private owner: DPStarter; |
||||
|
|
||||
get name() { |
get status() { |
||||
return this._name; |
return this._status; |
||||
} |
} |
||||
|
|
||||
set name(name: string) { |
set status(status: TaskStatus) { |
||||
this._name = name; |
this._status = status; |
||||
} |
(status === TaskStatus.Finished || status === TaskStatus.Stopped) && this.owner.emit('over', this); |
||||
|
} |
||||
constructor(owner: DPStarter) { |
|
||||
super(); |
// 任务名称
|
||||
this.owner = owner; |
private _name = ''; |
||||
} |
|
||||
|
get name() { |
||||
init() { |
return this._name; |
||||
console.log('init'); |
} |
||||
this.status = TaskStatus.Init; |
|
||||
} |
set name(name: string) { |
||||
|
this._name = name; |
||||
start() { |
} |
||||
console.log('start'); |
|
||||
this.status = TaskStatus.Running; |
constructor(owner: DPStarter) { |
||||
} |
super(); |
||||
|
this.owner = owner; |
||||
pause() { |
} |
||||
console.log('pause'); |
|
||||
this.status = TaskStatus.Paused; |
init() { |
||||
} |
console.log('init'); |
||||
|
this.status = TaskStatus.Init; |
||||
stop() { |
} |
||||
console.log('stop'); |
|
||||
this.status = TaskStatus.Stopped; |
start() { |
||||
} |
console.log('start'); |
||||
|
this.status = TaskStatus.Running; |
||||
restart() { |
} |
||||
console.log('restart'); |
|
||||
this.status = TaskStatus.Running; |
pause() { |
||||
} |
console.log('pause'); |
||||
} |
this.status = TaskStatus.Paused; |
||||
|
} |
||||
|
|
||||
|
stop() { |
||||
|
console.log('stop'); |
||||
|
this.status = TaskStatus.Stopped; |
||||
|
} |
||||
|
|
||||
|
restart() { |
||||
|
console.log('restart'); |
||||
|
this.status = TaskStatus.Running; |
||||
|
} |
||||
|
} |
@ -1,10 +1,33 @@ |
|||||
import { DPStarter, DPTask } from './base/base'; |
import { DPStarter, DPTask } from './base/index'; |
||||
|
import { clickForce } from './lib/utils'; |
||||
|
|
||||
class Hongguo extends DPStarter { |
class Hongguo extends DPStarter { |
||||
doInit() { |
doInit() { |
||||
launchApp('com.hongguo.app'); |
console.log('初始化!'); |
||||
|
|
||||
|
makeSure(app.launch('com.phoenix.read'), { |
||||
|
closeBtns: ['android:id/button1'], |
||||
|
landing: [id('di1').text('福利').visibleToUser().selected(false).findOne(1000)] |
||||
|
}); |
||||
|
const widget = id('di1').text('福利').visibleToUser().selected(false).findOne(1000); |
||||
|
widget && clickForce(widget); |
||||
} |
} |
||||
} |
} |
||||
|
|
||||
const hongguo = new Hongguo(); |
const hongguo = new Hongguo(); |
||||
|
|
||||
|
const task1 = new DPTask(hongguo); |
||||
|
|
||||
hongguo.start(); |
hongguo.start(); |
||||
|
function makeSure(result: any, options: any) { |
||||
|
if (!result) { |
||||
|
console.log('result is null'); |
||||
|
return; |
||||
|
} |
||||
|
if (options.closeBtns) { |
||||
|
options.closeBtns.forEach((cid: string) => { |
||||
|
const btn = id(cid).findOne(1000); |
||||
|
btn && clickForce(btn); |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
@ -0,0 +1,21 @@ |
|||||
|
// 找到控件区域点击
|
||||
|
export function clickForce(ele: UiObject) { |
||||
|
if (!ele) { |
||||
|
console.log('控件不存在'); |
||||
|
return; |
||||
|
} |
||||
|
const bound = ele.bounds(); |
||||
|
const x = bound.centerX(); |
||||
|
const y = bound.centerY(); |
||||
|
click(x, y); |
||||
|
click(x - 1, y + 1); |
||||
|
click(x + 1, y - 1); |
||||
|
} |
||||
|
|
||||
|
export function clickForceXY(x: number, y: number, width: number, height: number) { |
||||
|
width ? (x = x + width / 2) : (x = x + 2); |
||||
|
height ? (y = y + height / 2) : (y = y + 2); |
||||
|
click(x, y); |
||||
|
click(x - 1, y + 1); |
||||
|
click(x + 1, y - 1); |
||||
|
} |
Loading…
Reference in new issue