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

View File

@@ -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
}

View File

@@ -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())

View File

@@ -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())
}
}