From 21a2f9fd226d4dd65f532ca52fc18f348acc32ad Mon Sep 17 00:00:00 2001 From: "lilong.129" Date: Tue, 30 May 2023 17:40:41 +0800 Subject: [PATCH] refactor: check feed activity --- hrp/pkg/uixt/android_adb_driver.go | 3 ++- hrp/pkg/uixt/video_crawler.go | 31 ++++++++++++++++++++++-------- hrp/step_mobile_ui.go | 2 +- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/hrp/pkg/uixt/android_adb_driver.go b/hrp/pkg/uixt/android_adb_driver.go index 8017139c..650aa9b8 100644 --- a/hrp/pkg/uixt/android_adb_driver.go +++ b/hrp/pkg/uixt/android_adb_driver.go @@ -386,7 +386,8 @@ func (ad *adbDriver) AssertAppForeground(packageName string) error { return err } if app.PackageName != packageName { - return errors.New("app is not in foreground") + return fmt.Errorf("%v is not in foreground, current is %v", + packageName, app.PackageName) } return nil } diff --git a/hrp/pkg/uixt/video_crawler.go b/hrp/pkg/uixt/video_crawler.go index 3f7da689..440e5ded 100644 --- a/hrp/pkg/uixt/video_crawler.go +++ b/hrp/pkg/uixt/video_crawler.go @@ -329,10 +329,22 @@ func (dExt *DriverExt) VideoCrawler(configs *VideoCrawlerConfigs) (err error) { }() // launch app - if err = dExt.Driver.AppLaunch(configs.AppPackageName); err != nil { - return err + if configs.AppPackageName != "" { + if err = dExt.Driver.AppLaunch(configs.AppPackageName); err != nil { + return err + } + time.Sleep(5 * time.Second) + } else { + app, err := dExt.Driver.GetForegroundApp() + if err != nil { + return err + } + log.Info(). + Str("packageName", app.PackageName). + Str("activity", app.Activity). + Msg("start to video crawler for current foreground app") + configs.AppPackageName = app.PackageName } - time.Sleep(5 * time.Second) liveCrawler := LiveCrawler{ driver: dExt, @@ -352,11 +364,6 @@ func (dExt *DriverExt) VideoCrawler(configs *VideoCrawlerConfigs) (err error) { log.Warn().Msg("interrupted in feed crawler") return errors.Wrap(code.InterruptError, "feed crawler interrupted") default: - // check if feed page - if err := dExt.assertActivity(configs.AppPackageName, "feed"); err != nil { - return err - } - // take screenshot and get screen texts by OCR imagePath, texts, err := dExt.GetScreenTextsByOCR() if err != nil { @@ -411,6 +418,11 @@ func (dExt *DriverExt) VideoCrawler(configs *VideoCrawlerConfigs) (err error) { return err } time.Sleep(1 * time.Second) + + // check if feed page + if err := dExt.assertActivity(configs.AppPackageName, "feed"); err != nil { + return err + } } } } @@ -448,6 +460,8 @@ var popups = [][]string{ {".*个人信息保护.*", "同意"}, {".*更新.*", "以后再说"}, {".*定位.*", ".*允许.*"}, + {".*拍照.*", "仅.*允许"}, + {".*录音.*", "仅.*允许"}, } func (dExt *DriverExt) autoPopupHandler(ocrResult *OcrResult) error { @@ -461,6 +475,7 @@ func (dExt *DriverExt) autoPopupHandler(ocrResult *OcrResult) error { log.Warn().Interface("popup", popup). Interface("texts", ocrResult.Texts).Msg("text popup found") point := points[1].Center() + log.Info().Str("text", points[1].Text).Msg("close popup") if err := dExt.TapAbsXY(point.X, point.Y); err != nil { log.Error().Err(err).Msg("tap popup failed") return errors.Wrap(code.MobileUIPopupError, err.Error()) diff --git a/hrp/step_mobile_ui.go b/hrp/step_mobile_ui.go index d947baca..87a1792a 100644 --- a/hrp/step_mobile_ui.go +++ b/hrp/step_mobile_ui.go @@ -594,7 +594,7 @@ func runStepMobileUI(s *SessionRunner, step *TStep) (stepResult *StepResult, err packageName := uiDriver.Driver.GetLastLaunchedApp() err2 := uiDriver.Driver.AssertAppForeground(packageName) if packageName != "" && err2 != nil { - log.Error().Err(err2).Str("packageName", packageName).Msg("app is not in foreground") + log.Error().Err(err2).Msg("app is not in foreground") err = errors.Wrap(code.MobileUIAppNotInForegroundError, err2.Error()) } }