refactor: check feed activity

This commit is contained in:
lilong.129
2023-05-30 17:40:41 +08:00
parent 4c6cce1d17
commit 21a2f9fd22
3 changed files with 26 additions and 10 deletions
+2 -1
View File
@@ -386,7 +386,8 @@ func (ad *adbDriver) AssertAppForeground(packageName string) error {
return err return err
} }
if app.PackageName != packageName { 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 return nil
} }
+23 -8
View File
@@ -329,10 +329,22 @@ func (dExt *DriverExt) VideoCrawler(configs *VideoCrawlerConfigs) (err error) {
}() }()
// launch app // launch app
if err = dExt.Driver.AppLaunch(configs.AppPackageName); err != nil { if configs.AppPackageName != "" {
return err 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{ liveCrawler := LiveCrawler{
driver: dExt, driver: dExt,
@@ -352,11 +364,6 @@ func (dExt *DriverExt) VideoCrawler(configs *VideoCrawlerConfigs) (err error) {
log.Warn().Msg("interrupted in feed crawler") log.Warn().Msg("interrupted in feed crawler")
return errors.Wrap(code.InterruptError, "feed crawler interrupted") return errors.Wrap(code.InterruptError, "feed crawler interrupted")
default: default:
// check if feed page
if err := dExt.assertActivity(configs.AppPackageName, "feed"); err != nil {
return err
}
// take screenshot and get screen texts by OCR // take screenshot and get screen texts by OCR
imagePath, texts, err := dExt.GetScreenTextsByOCR() imagePath, texts, err := dExt.GetScreenTextsByOCR()
if err != nil { if err != nil {
@@ -411,6 +418,11 @@ func (dExt *DriverExt) VideoCrawler(configs *VideoCrawlerConfigs) (err error) {
return err return err
} }
time.Sleep(1 * time.Second) 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 { func (dExt *DriverExt) autoPopupHandler(ocrResult *OcrResult) error {
@@ -461,6 +475,7 @@ func (dExt *DriverExt) autoPopupHandler(ocrResult *OcrResult) error {
log.Warn().Interface("popup", popup). log.Warn().Interface("popup", popup).
Interface("texts", ocrResult.Texts).Msg("text popup found") Interface("texts", ocrResult.Texts).Msg("text popup found")
point := points[1].Center() point := points[1].Center()
log.Info().Str("text", points[1].Text).Msg("close popup")
if err := dExt.TapAbsXY(point.X, point.Y); err != nil { if err := dExt.TapAbsXY(point.X, point.Y); err != nil {
log.Error().Err(err).Msg("tap popup failed") log.Error().Err(err).Msg("tap popup failed")
return errors.Wrap(code.MobileUIPopupError, err.Error()) return errors.Wrap(code.MobileUIPopupError, err.Error())
+1 -1
View File
@@ -594,7 +594,7 @@ func runStepMobileUI(s *SessionRunner, step *TStep) (stepResult *StepResult, err
packageName := uiDriver.Driver.GetLastLaunchedApp() packageName := uiDriver.Driver.GetLastLaunchedApp()
err2 := uiDriver.Driver.AssertAppForeground(packageName) err2 := uiDriver.Driver.AssertAppForeground(packageName)
if packageName != "" && err2 != nil { 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()) err = errors.Wrap(code.MobileUIAppNotInForegroundError, err2.Error())
} }
} }