refactor:

1, add options for AppLaunch/AppTerminate/AppClear;
2, add pre hook and post hook for AppLaunch/AppTerminate action
This commit is contained in:
lilong.129
2025-05-09 23:30:35 +08:00
parent 2a13594e3d
commit 4a2276c7f0
7 changed files with 69 additions and 16 deletions

View File

@@ -266,10 +266,15 @@ func (ad *ADBDriver) PressKeyCode(keyCode KeyCode, metaState KeyMeta) (err error
return
}
func (ad *ADBDriver) AppLaunch(packageName string) (err error) {
func (ad *ADBDriver) AppLaunch(packageName string, opts ...option.ActionOption) (err error) {
log.Info().Str("packageName", packageName).Msg("ADBDriver.AppLaunch")
// 不指定 Activity 名称启动(启动主 Activity
// adb shell monkey -p <packagename> -c android.intent.category.LAUNCHER 1
actionOptions := option.NewActionOptions(opts...)
preHandler_AppLaunch(ad, actionOptions)
defer postHandler(ad, actionOptions)
sOutput, err := ad.runShellCommand(
"monkey", "-p", packageName, "-c", "android.intent.category.LAUNCHER", "1",
)
@@ -284,10 +289,15 @@ func (ad *ADBDriver) AppLaunch(packageName string) (err error) {
return nil
}
func (ad *ADBDriver) AppTerminate(packageName string) (successful bool, err error) {
func (ad *ADBDriver) AppTerminate(packageName string, opts ...option.ActionOption) (successful bool, err error) {
log.Info().Str("packageName", packageName).Msg("ADBDriver.AppTerminate")
// 强制停止应用,停止 <packagename> 相关的进程
// adb shell am force-stop <packagename>
actionOptions := option.NewActionOptions(opts...)
preHandler_AppTerminate(ad, actionOptions)
defer postHandler(ad, actionOptions)
_, err = ad.runShellCommand("am", "force-stop", packageName)
if err != nil {
return false, errors.Wrap(err, "force-stop app failed")
@@ -541,7 +551,7 @@ func (ad *ADBDriver) SendKeysByAdbKeyBoard(text string) (err error) {
return
}
func (ad *ADBDriver) AppClear(packageName string) error {
func (ad *ADBDriver) AppClear(packageName string, opts ...option.ActionOption) error {
log.Info().Str("packageName", packageName).Msg("ADBDriver.AppClear")
if _, err := ad.runShellCommand("pm", "clear", packageName); err != nil {
log.Error().Str("packageName", packageName).Err(err).Msg("failed to clear package cache")