fix: get validateUI error

This commit is contained in:
lilong.129
2024-11-20 17:25:22 +08:00
parent c1895e3a42
commit 979535a73b
4 changed files with 43 additions and 45 deletions

View File

@@ -1 +1 @@
v5.0.0+2411201548 v5.0.0+2411201735

View File

@@ -53,76 +53,73 @@ func newDriverExt(device IDevice, driver IWebDriver, options ...DriverOption) (d
return dExt, nil return dExt, nil
} }
func (dExt *DriverExt) AssertOCR(text, assert string) bool { func (dExt *DriverExt) assertOCR(text, assert string) error {
var options []ActionOption var options []ActionOption
options = append(options, WithScreenShotFileName(fmt.Sprintf("assert_ocr_%s", text))) options = append(options, WithScreenShotFileName(fmt.Sprintf("assert_ocr_%s", text)))
var err error
switch assert { switch assert {
case AssertionEqual: case AssertionEqual:
_, err = dExt.FindScreenText(text, options...) _, err := dExt.FindScreenText(text, options...)
return err == nil if err != nil {
return errors.Wrap(err, "assert ocr equal failed")
}
case AssertionNotEqual: case AssertionNotEqual:
_, err = dExt.FindScreenText(text, options...) _, err := dExt.FindScreenText(text, options...)
return err != nil if err == nil {
return errors.New("assert ocr not equal failed")
}
case AssertionExists: case AssertionExists:
options = append(options, WithRegex(true)) options = append(options, WithRegex(true))
_, err = dExt.FindScreenText(text, options...) _, err := dExt.FindScreenText(text, options...)
return err == nil if err != nil {
return errors.Wrap(err, "assert ocr exists failed")
}
case AssertionNotExists: case AssertionNotExists:
options = append(options, WithRegex(true)) options = append(options, WithRegex(true))
_, err = dExt.FindScreenText(text, options...) _, err := dExt.FindScreenText(text, options...)
return err != nil if err == nil {
return errors.New("assert ocr not exists failed")
}
default: default:
log.Warn().Str("assert method", assert).Msg("unexpected assert method") return fmt.Errorf("unexpected assert method %s", assert)
} }
return false return nil
} }
func (dExt *DriverExt) AssertForegroundApp(appName, assert string) bool { func (dExt *DriverExt) assertForegroundApp(appName, assert string) (err error) {
app, err := dExt.Driver.GetForegroundApp() err = dExt.Driver.AssertForegroundApp(appName)
if err != nil {
log.Warn().Err(err).Msg("get foreground app failed, skip app/activity assertion")
return true // Notice: ignore error when get foreground app failed
}
log.Debug().Interface("app", app).Msg("get foreground app")
// assert package name
switch assert { switch assert {
case AssertionEqual: case AssertionEqual:
return app.PackageName == appName if err != nil {
return errors.Wrap(err, "assert foreground app equal failed")
}
case AssertionNotEqual: case AssertionNotEqual:
return app.PackageName != appName if err == nil {
return errors.New("assert foreground app not equal failed")
}
default: default:
log.Warn().Str("assert method", assert).Msg("unexpected assert method") return fmt.Errorf("unexpected assert method %s", assert)
} }
return false return nil
} }
func (dExt *DriverExt) DoValidation(check, assert, expected string, message ...string) bool { func (dExt *DriverExt) DoValidation(check, assert, expected string, message ...string) (err error) {
var result bool
switch check { switch check {
case SelectorOCR: case SelectorOCR:
result = dExt.AssertOCR(expected, assert) err = dExt.assertOCR(expected, assert)
case SelectorForegroundApp: case SelectorForegroundApp:
result = dExt.AssertForegroundApp(expected, assert) err = dExt.assertForegroundApp(expected, assert)
} }
if !result { if err != nil {
if message == nil { if message == nil {
message = []string{""} message = []string{""}
} }
log.Error(). log.Error().Err(err).Str("assert", assert).Str("expect", expected).
Str("assert", assert). Str("msg", message[0]).Msg("validate failed")
Str("expect", expected). return err
Str("msg", message[0]).
Msg("validate UI failed")
return false
} }
log.Info(). log.Info().Str("assert", assert).Str("expect", expected).Msg("validate success")
Str("assert", assert). return nil
Str("expect", expected).
Msg("validate UI success")
return true
} }

View File

@@ -139,7 +139,7 @@ func (hd *hdcDriver) GetForegroundApp() (app AppInfo, err error) {
func (hd *hdcDriver) AssertForegroundApp(packageName string, activityType ...string) error { func (hd *hdcDriver) AssertForegroundApp(packageName string, activityType ...string) error {
// Todo // Todo
return errDriverNotImplemented return nil
} }
func (hd *hdcDriver) StartCamera() error { func (hd *hdcDriver) StartCamera() error {

View File

@@ -787,8 +787,9 @@ func validateUI(ud *uixt.DriverExt, iValidators []interface{}) (validateResults
return nil, errors.New("validator expect should be string") return nil, errors.New("validator expect should be string")
} }
if !ud.DoValidation(validator.Check, validator.Assert, expected, validator.Message) { err := ud.DoValidation(validator.Check, validator.Assert, expected, validator.Message)
return validateResults, errors.New("step validation failed") if err != nil {
return validateResults, errors.Wrap(err, "step validation failed")
} }
validataResult.CheckResult = "pass" validataResult.CheckResult = "pass"