From 1fd170236c8f75a375985eae7e6e7afe2beda1f4 Mon Sep 17 00:00:00 2001 From: "lilong.129" Date: Thu, 21 Sep 2023 16:07:13 +0800 Subject: [PATCH] fix: raise error if close area not found to popup --- hrp/pkg/uixt/popups.go | 35 ++++++++++++++--------------------- hrp/pkg/uixt/swipe.go | 3 ++- 2 files changed, 16 insertions(+), 22 deletions(-) diff --git a/hrp/pkg/uixt/popups.go b/hrp/pkg/uixt/popups.go index 2f9fcc10..a6546109 100644 --- a/hrp/pkg/uixt/popups.go +++ b/hrp/pkg/uixt/popups.go @@ -62,31 +62,18 @@ func (dExt *DriverExt) ClosePopupsHandler(options ...ActionOption) error { log.Error().Err(err).Msg("get screen result failed for popup handler") continue } - screenResult.Popup.RetryCount = retryCount - // 1. there are no popups here (fast return normally) - // 2. failed to close popup (maybe tap error, return error) - // 3. successful to close popup (sleep and wait for next retry if existed) - if screenResult.Popup == nil { + popup := screenResult.Popup + if popup == nil { log.Debug().Msg("no popup found") break } + popup.RetryCount = retryCount - // popup found - if !screenResult.Popup.PopupArea.IsEmpty() { - screenResult.Popup.CloseStatus = CloseStatusFound - } - if screenResult.Popup.CloseArea.IsEmpty() { - log.Warn().Msg("popup close area not found") - break - } - screenResult.Popup.CloseStatus = CloseStatusFound - - if err = dExt.tapPopupHandler(screenResult.Popup); err != nil { + if err = dExt.tapPopupHandler(popup); err != nil { return err } - log.Info().Interface("popup", screenResult.Popup).Msg("close popup success") // sleep for another popup (if existed) to pop time.Sleep(time.Duration(1000*interval) * time.Millisecond) } @@ -97,12 +84,17 @@ func (dExt *DriverExt) tapPopupHandler(popup *PopupInfo) error { if popup == nil { return nil } - if popup.CloseArea.IsEmpty() { - log.Warn().Msg("popup close area not found") - return nil + popup.CloseStatus = CloseStatusFound + + popupClose := popup.CloseArea + if popupClose.IsEmpty() { + log.Error(). + Interface("popup", popup). + Msg("popup close area not found") + return errors.New("popup close area not found") } - closePoint := popup.CloseArea.Center() + closePoint := popupClose.Center() log.Info(). Interface("popup", popup). Interface("closePoint", closePoint). @@ -111,6 +103,7 @@ func (dExt *DriverExt) tapPopupHandler(popup *PopupInfo) error { log.Error().Err(err).Msg("tap popup failed") return errors.Wrap(code.MobileUIPopupError, err.Error()) } + // tap popup success return nil } diff --git a/hrp/pkg/uixt/swipe.go b/hrp/pkg/uixt/swipe.go index 704d6daa..92c52f28 100644 --- a/hrp/pkg/uixt/swipe.go +++ b/hrp/pkg/uixt/swipe.go @@ -148,7 +148,8 @@ func (dExt *DriverExt) swipeToTapTexts(texts []string, options ...ActionOption) if err != nil { return err } - points, err := screenResult.Texts.FindTexts(texts, dExt.ParseActionOptions(optionsWithoutIdentifier...)...) + points, err := screenResult.Texts.FindTexts(texts, + dExt.ParseActionOptions(optionsWithoutIdentifier...)...) if err != nil { log.Error().Err(err).Strs("texts", texts).Msg("find texts failed") // target texts not found, try to auto handle popup