From 20b2fa51afa28224a55324fde569803200607ce3 Mon Sep 17 00:00:00 2001 From: buyuxiang <347586493@qq.com> Date: Tue, 29 Aug 2023 17:29:08 +0800 Subject: [PATCH] add popup close_status=found --- hrp/pkg/uixt/ext.go | 6 +++--- hrp/pkg/uixt/interface.go | 8 ++++++++ hrp/pkg/uixt/popups.go | 10 ++++++++++ hrp/pkg/uixt/service_vedem.go | 7 +++++++ 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/hrp/pkg/uixt/ext.go b/hrp/pkg/uixt/ext.go index 5b26f157..2f96b560 100644 --- a/hrp/pkg/uixt/ext.go +++ b/hrp/pkg/uixt/ext.go @@ -113,12 +113,12 @@ func (screenResults ScreenResultMap) updatePopupCloseStatus() { continue } // popup existed, but identical popups occurs during next retry - if curPopup.Text == nextPopup.Text && curPopup.Type == nextPopup.Type { - popupScreenResultList[i].Popup.CloseStatus = "fail" + if nextPopup.CloseArea.IsIdentical(curPopup.CloseArea) { + popupScreenResultList[i].Popup.CloseStatus = CloseStatusFail continue } // popup existed, but no popup or different popup occurs during next retry (IsClosed=true) - popupScreenResultList[i].Popup.CloseStatus = "success" + popupScreenResultList[i].Popup.CloseStatus = CloseStatusSuccess } } diff --git a/hrp/pkg/uixt/interface.go b/hrp/pkg/uixt/interface.go index e816573d..e292d93c 100644 --- a/hrp/pkg/uixt/interface.go +++ b/hrp/pkg/uixt/interface.go @@ -2,10 +2,13 @@ package uixt import ( "bytes" + "math" "strings" "time" "github.com/httprunner/funplugin" + + "github.com/httprunner/httprunner/v4/hrp/internal/builtin" ) var ( @@ -434,6 +437,11 @@ type PointF struct { Y float64 `json:"y"` } +func (p PointF) IsIdentical(p2 PointF) bool { + return builtin.IsZeroFloat64(math.Abs(p.X-p2.X)) && + builtin.IsZeroFloat64(math.Abs(p.Y-p2.Y)) +} + type Rect struct { Point Size diff --git a/hrp/pkg/uixt/popups.go b/hrp/pkg/uixt/popups.go index 87d078d3..efe9ad05 100644 --- a/hrp/pkg/uixt/popups.go +++ b/hrp/pkg/uixt/popups.go @@ -27,6 +27,12 @@ var popups = [][]string{ {"管理使用时间", ".*忽略.*"}, } +const ( + CloseStatusFound = "found" + CloseStatusSuccess = "success" + CloseStatusFail = "fail" +) + func findTextPopup(screenTexts OCRTexts) (closePoint *OCRText) { for _, popup := range popups { if len(popup) != 2 { @@ -126,9 +132,13 @@ func (dExt *DriverExt) ClosePopupsHandler(options ...ActionOption) error { break } screenResult.Popup.RetryCount = retryCount + if !screenResult.Popup.PopupArea.IsEmpty() { + screenResult.Popup.CloseStatus = CloseStatusFound + } if screenResult.Popup.CloseArea.IsEmpty() { break } + screenResult.Popup.CloseStatus = CloseStatusFound if err = dExt.tapPopupHandler(screenResult.Popup); err != nil { return err diff --git a/hrp/pkg/uixt/service_vedem.go b/hrp/pkg/uixt/service_vedem.go index 8b6f6ce1..716f33e9 100644 --- a/hrp/pkg/uixt/service_vedem.go +++ b/hrp/pkg/uixt/service_vedem.go @@ -5,6 +5,7 @@ import ( "fmt" "image" "io/ioutil" + "math" "mime/multipart" "net/http" "regexp" @@ -463,6 +464,12 @@ func (box Box) IsEmpty() bool { return builtin.IsZeroFloat64(box.Width) && builtin.IsZeroFloat64(box.Height) } +func (box Box) IsIdentical(box2 Box) bool { + return box.Point.IsIdentical(box2.Point) && + builtin.IsZeroFloat64(math.Abs(box.Width-box2.Width)) && + builtin.IsZeroFloat64(math.Abs(box.Height-box2.Height)) +} + func (box Box) Center() PointF { return PointF{ X: box.Point.X + box.Width*0.5,