From 70039f327cfd81b4069ef4c84ab885dd2ec169cf Mon Sep 17 00:00:00 2001 From: "lilong.129" Date: Wed, 31 May 2023 17:55:24 +0800 Subject: [PATCH] fix: ignore error when get foreground app failed --- hrp/internal/code/code.go | 6 ++++-- hrp/pkg/uixt/ext.go | 6 ++++-- hrp/pkg/uixt/video_crawler.go | 18 +++++++++++++----- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/hrp/internal/code/code.go b/hrp/internal/code/code.go index 9c2ebfa9..7c633649 100644 --- a/hrp/internal/code/code.go +++ b/hrp/internal/code/code.go @@ -74,7 +74,8 @@ var ( MobileUILaunchAppError = errors.New("mobile UI launch app error") // 71 MobileUIValidationError = errors.New("mobile UI validation error") // 75 MobileUIAppNotInForegroundError = errors.New("mobile UI app not in foreground error") // 76 - MobileUIPopupError = errors.New("mobile UI popup error") // 77 + MobileUIActivityNotMatchError = errors.New("mobile UI activity not match error") // 77 + MobileUIPopupError = errors.New("mobile UI popup error") // 78 ) // OCR related: [80, 90) @@ -136,7 +137,8 @@ var errorsMap = map[error]int{ MobileUILaunchAppError: 71, MobileUIValidationError: 75, MobileUIAppNotInForegroundError: 76, - MobileUIPopupError: 77, + MobileUIActivityNotMatchError: 77, + MobileUIPopupError: 78, // OCR related OCREnvMissedError: 80, diff --git a/hrp/pkg/uixt/ext.go b/hrp/pkg/uixt/ext.go index 8afe2233..4b38d701 100644 --- a/hrp/pkg/uixt/ext.go +++ b/hrp/pkg/uixt/ext.go @@ -214,9 +214,11 @@ func (dExt *DriverExt) GetStepCacheData() map[string]interface{} { for imagePath, screenResult := range dExt.cacheStepData.screenResults { o, _ := json.Marshal(screenResult.Texts) data := map[string]interface{}{ - "tags": screenResult.Tags, - "texts": string(o), + "tags": screenResult.Tags, + "texts": string(o), + "popularity": screenResult.Popularity, } + screenResults[imagePath] = data } cacheData["screen_results"] = screenResults diff --git a/hrp/pkg/uixt/video_crawler.go b/hrp/pkg/uixt/video_crawler.go index 001734df..1da4803f 100644 --- a/hrp/pkg/uixt/video_crawler.go +++ b/hrp/pkg/uixt/video_crawler.go @@ -260,10 +260,14 @@ func (l *LiveCrawler) Run(driver *DriverExt, enterPoint PointF) error { imageResult, err := l.driver.GetScreenResult() if err != nil { log.Error().Err(err).Msg("OCR GetTexts failed") + time.Sleep(3 * time.Second) continue } screenResult := l.driver.cacheStepData.screenResults[imageResult.imagePath] screenResult.Tags = []string{"live"} + if imageResult.LiveType != "" { + screenResult.Tags = append(screenResult.Tags, imageResult.LiveType) + } // check live type and incr live count if err := l.currentStat.incrLive(screenResult, l.driver); err != nil { @@ -368,6 +372,7 @@ func (dExt *DriverExt) VideoCrawler(configs *VideoCrawlerConfigs) (err error) { imageResult, err := dExt.GetScreenResult() if err != nil { log.Error().Err(err).Msg("OCR GetTexts failed") + time.Sleep(3 * time.Second) continue } screenResult := dExt.cacheStepData.screenResults[imageResult.imagePath] @@ -433,26 +438,29 @@ func (dExt *DriverExt) assertActivity(packageName, activityType string) error { Str("activity_type", activityType).Msg("assert activity") app, err := dExt.Driver.GetForegroundApp() if err != nil { - log.Error().Err(err).Msg("get foreground app failed") - return err + log.Warn().Err(err).Msg("get foreground app failed, skip app/activity assertion") + return nil // Notice: ignore error when get foreground app failed } if app.PackageName != packageName { return errors.Wrap(code.MobileUIAppNotInForegroundError, - fmt.Sprintf("app %s is not in foreground", packageName)) + fmt.Sprintf("foreground app %s, expect %s", app.PackageName, packageName)) } + var expectActivity string if activities, ok := androidActivities[app.PackageName]; ok { if activity, ok := activities[activityType]; ok { if strings.HasSuffix(app.Activity, activity) { return nil } + expectActivity = activity } } log.Error().Interface("app", app.AppBaseInfo).Msg("app activity not match") - return errors.Wrap(code.MobileUIAppNotInForegroundError, - fmt.Sprintf("%s activity is not in foreground", activityType)) + return errors.Wrap(code.MobileUIActivityNotMatchError, + fmt.Sprintf("foreground activity %s, expect %s %s", + app.Activity, activityType, expectActivity)) } // TODO: add more popup texts