package uixt import ( "github.com/pkg/errors" "github.com/rs/zerolog/log" "github.com/httprunner/httprunner/v4/hrp/internal/code" ) // TODO: add more popup texts var popups = [][]string{ {".*青少年.*", "我知道了"}, // 青少年弹窗 {".*个人信息保护.*", "同意"}, {".*通讯录.*", "拒绝"}, {".*更新.*", "以后再说|稍后|取消"}, {".*升级.*", "以后再说|稍后|取消"}, {".*定位.*", "仅.*允许"}, {".*拍照.*", "仅.*允许"}, {".*录音.*", "仅.*允许"}, {".*位置.*", "仅.*允许"}, {".*权限.*", "仅.*允许|始终允许"}, {".*允许.*", "仅.*允许|始终允许"}, {".*风险.*", "继续使用"}, {"管理使用时间", ".*忽略.*"}, } func (dExt *DriverExt) AutoPopupHandler(screenTexts OCRTexts) error { for _, popup := range popups { if len(popup) != 2 { continue } points, err := screenTexts.FindTexts([]string{popup[0], popup[1]}, WithRegex(true)) if err == nil { log.Warn().Interface("popup", popup). Interface("texts", screenTexts).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()) } // tap popup success return nil } } // no popup found return nil }