mirror of
https://github.com/httprunner/httprunner.git
synced 2026-06-09 01:39:39 +08:00
fix: get validateUI error
This commit is contained in:
@@ -1 +1 @@
|
|||||||
v5.0.0+2411201548
|
v5.0.0+2411201735
|
||||||
|
|||||||
@@ -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
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user