From 58f1fec2faacd75383192dfc61a338e004d6a262 Mon Sep 17 00:00:00 2001 From: "lilong.129" Date: Mon, 17 Apr 2023 22:45:58 +0800 Subject: [PATCH] change: GenNameWithTimestamp --- .../demo_android_feed_random_swipe.json | 134 ++++++++++++++++++ ...=> demo_android_feed_random_swipe_test.go} | 2 +- examples/uitest/demo_feed_random_slide.json | 2 +- ...yin_live.json => demo_ios_live_swipe.json} | 0 ...in_test.go => demo_ios_live_swipe_test.go} | 5 +- hrp/cmd/adb/screencap.go | 2 +- hrp/internal/builtin/utils.go | 7 +- hrp/pkg/gadb/device.go | 2 +- hrp/pkg/uixt/ext.go | 2 +- hrp/pkg/uixt/ocr_vedem.go | 6 +- hrp/pkg/uixt/opencv.go | 4 +- hrp/step_mobile_ui.go | 2 +- 12 files changed, 151 insertions(+), 17 deletions(-) create mode 100644 examples/uitest/demo_android_feed_random_swipe.json rename examples/uitest/{demo_feed_random_slide_test.go => demo_android_feed_random_swipe_test.go} (94%) rename examples/uitest/{demo_douyin_live.json => demo_ios_live_swipe.json} (100%) rename examples/uitest/{demo_douyin_test.go => demo_ios_live_swipe_test.go} (91%) diff --git a/examples/uitest/demo_android_feed_random_swipe.json b/examples/uitest/demo_android_feed_random_swipe.json new file mode 100644 index 00000000..d74f45ae --- /dev/null +++ b/examples/uitest/demo_android_feed_random_swipe.json @@ -0,0 +1,134 @@ +{ + "config": { + "name": "点播_抖音_滑动场景_随机间隔_android", + "variables": { + "device": "${ENV(SerialNumber)}" + }, + "android": [ + { + "serial": "$device" + } + ] + }, + "teststeps": [ + { + "name": "启动抖音", + "android": { + "actions": [ + { + "method": "app_terminate", + "params": "com.ss.android.ugc.aweme" + }, + { + "method": "app_launch", + "params": "com.ss.android.ugc.aweme" + }, + { + "method": "sleep", + "params": 10 + } + ] + }, + "validate": [ + { + "check": "ui_foreground_app", + "assert": "equal", + "expect": "com.ss.android.ugc.aweme", + "msg": "app [com.ss.android.ugc.aweme] should be in foreground" + } + ] + }, + { + "name": "处理青少年弹窗", + "android": { + "actions": [ + { + "method": "tap_ocr", + "params": "我知道了", + "ignore_NotFoundError": true + } + ] + } + }, + { + "name": "滑动 Feed 3 次,随机间隔 0-5s", + "android": { + "actions": [ + { + "method": "swipe", + "params": "up" + }, + { + "method": "sleep_random", + "params": [ + 0, + 5 + ] + } + ] + }, + "loops": 3 + }, + { + "name": "滑动 Feed 1 次,随机间隔 5-10s", + "android": { + "actions": [ + { + "method": "swipe", + "params": "up" + }, + { + "method": "sleep_random", + "params": [ + 5, + 10 + ] + } + ] + }, + "loops": 1 + }, + { + "name": "滑动 Feed 10 次,70% 随机间隔 0-5s,30% 随机间隔 5-10s", + "android": { + "actions": [ + { + "method": "swipe", + "params": "up" + }, + { + "method": "sleep_random", + "params": [ + 0, + 5, + 0.7, + 5, + 10, + 0.3 + ] + } + ] + }, + "loops": 10 + }, + { + "name": "exit", + "android": { + "actions": [ + { + "method": "app_terminate", + "params": "com.ss.android.ugc.aweme" + } + ] + }, + "validate": [ + { + "check": "ui_foreground_app", + "assert": "not_equal", + "expect": "com.ss.android.ugc.aweme", + "msg": "app [com.ss.android.ugc.aweme] should not be in foreground" + } + ] + } + ] +} diff --git a/examples/uitest/demo_feed_random_slide_test.go b/examples/uitest/demo_android_feed_random_swipe_test.go similarity index 94% rename from examples/uitest/demo_feed_random_slide_test.go rename to examples/uitest/demo_android_feed_random_swipe_test.go index 98311c69..a8d7392e 100644 --- a/examples/uitest/demo_feed_random_slide_test.go +++ b/examples/uitest/demo_android_feed_random_swipe_test.go @@ -50,7 +50,7 @@ func TestAndroidDouyinFeedTest(t *testing.T) { }, } - if err := testCase.Dump2JSON("demo_feed_random_slide.json"); err != nil { + if err := testCase.Dump2JSON("demo_android_feed_random_swipe.json"); err != nil { t.Fatal(err) } diff --git a/examples/uitest/demo_feed_random_slide.json b/examples/uitest/demo_feed_random_slide.json index d74f45ae..f256eaf4 100644 --- a/examples/uitest/demo_feed_random_slide.json +++ b/examples/uitest/demo_feed_random_slide.json @@ -109,7 +109,7 @@ } ] }, - "loops": 10 + "loops": 2 }, { "name": "exit", diff --git a/examples/uitest/demo_douyin_live.json b/examples/uitest/demo_ios_live_swipe.json similarity index 100% rename from examples/uitest/demo_douyin_live.json rename to examples/uitest/demo_ios_live_swipe.json diff --git a/examples/uitest/demo_douyin_test.go b/examples/uitest/demo_ios_live_swipe_test.go similarity index 91% rename from examples/uitest/demo_douyin_test.go rename to examples/uitest/demo_ios_live_swipe_test.go index def2e9d3..575edc58 100644 --- a/examples/uitest/demo_douyin_test.go +++ b/examples/uitest/demo_ios_live_swipe_test.go @@ -45,10 +45,7 @@ func TestIOSDouyinLive(t *testing.T) { }, } - if err := testCase.Dump2JSON("demo_douyin_live.json"); err != nil { - t.Fatal(err) - } - if err := testCase.Dump2YAML("demo_douyin_live.yaml"); err != nil { + if err := testCase.Dump2JSON("demo_ios_live_swipe.json"); err != nil { t.Fatal(err) } diff --git a/hrp/cmd/adb/screencap.go b/hrp/cmd/adb/screencap.go index bb1ddf6c..8147e0c4 100644 --- a/hrp/cmd/adb/screencap.go +++ b/hrp/cmd/adb/screencap.go @@ -23,7 +23,7 @@ var screencapAndroidDevicesCmd = &cobra.Command{ return err } - filepath := fmt.Sprintf("%s.png", builtin.GenNameWithTimestamp("screencap_")) + filepath := fmt.Sprintf("%s.png", builtin.GenNameWithTimestamp("screencap_%d")) if err = ioutil.WriteFile(filepath, res, 0o644); err != nil { return err } diff --git a/hrp/internal/builtin/utils.go b/hrp/internal/builtin/utils.go index a27ac366..b88f7902 100644 --- a/hrp/internal/builtin/utils.go +++ b/hrp/internal/builtin/utils.go @@ -444,6 +444,9 @@ func Sign(ver string, ak string, sk string, body []byte) string { return fmt.Sprintf("%v/%v", signKeyInfo, string(signResult)) } -func GenNameWithTimestamp(prefix string) string { - return fmt.Sprintf("%s%d", prefix, time.Now().Unix()) +func GenNameWithTimestamp(tmpl string) string { + if !strings.Contains(tmpl, "%d") { + tmpl = tmpl + "_%d" + } + return fmt.Sprintf(tmpl, time.Now().Unix()) } diff --git a/hrp/pkg/gadb/device.go b/hrp/pkg/gadb/device.go index dfac9042..2067755a 100644 --- a/hrp/pkg/gadb/device.go +++ b/hrp/pkg/gadb/device.go @@ -540,7 +540,7 @@ func (d *Device) InstallAPK(apk io.ReadSeeker) (string, error) { return string(raw), err } - remote := fmt.Sprintf("/data/local/tmp/%s.apk", builtin.GenNameWithTimestamp("gadb_remote_")) + remote := fmt.Sprintf("/data/local/tmp/%s.apk", builtin.GenNameWithTimestamp("gadb_remote_%d")) err := d.Push(apk, remote, time.Now()) if err != nil { return "", fmt.Errorf("error pushing: %v", err) diff --git a/hrp/pkg/uixt/ext.go b/hrp/pkg/uixt/ext.go index 6b495370..0d296577 100644 --- a/hrp/pkg/uixt/ext.go +++ b/hrp/pkg/uixt/ext.go @@ -698,7 +698,7 @@ func (dExt *DriverExt) DoAction(action MobileAction) error { case CtlScreenShot: // take screenshot log.Info().Msg("take screenshot for current screen") - _, err := dExt.TakeScreenShot(builtin.GenNameWithTimestamp("screenshot_")) + _, err := dExt.TakeScreenShot(builtin.GenNameWithTimestamp("screenshot_%d")) return err case CtlStartCamera: return dExt.Driver.StartCamera() diff --git a/hrp/pkg/uixt/ocr_vedem.go b/hrp/pkg/uixt/ocr_vedem.go index 48bb804a..15db742d 100644 --- a/hrp/pkg/uixt/ocr_vedem.go +++ b/hrp/pkg/uixt/ocr_vedem.go @@ -305,7 +305,7 @@ type OCRService interface { func (dExt *DriverExt) GetTextsByOCR(options ...DataOption) (texts OCRTexts, err error) { var bufSource *bytes.Buffer - if bufSource, err = dExt.TakeScreenShot(builtin.GenNameWithTimestamp("ocr_")); err != nil { + if bufSource, err = dExt.TakeScreenShot(builtin.GenNameWithTimestamp("step_%d_ocr")); err != nil { return } @@ -320,7 +320,7 @@ func (dExt *DriverExt) GetTextsByOCR(options ...DataOption) (texts OCRTexts, err func (dExt *DriverExt) FindTextByOCR(ocrText string, options ...DataOption) (x, y, width, height float64, err error) { var bufSource *bytes.Buffer - if bufSource, err = dExt.TakeScreenShot(builtin.GenNameWithTimestamp("ocr_")); err != nil { + if bufSource, err = dExt.TakeScreenShot(builtin.GenNameWithTimestamp("step_%d_ocr")); err != nil { return } @@ -338,7 +338,7 @@ func (dExt *DriverExt) FindTextByOCR(ocrText string, options ...DataOption) (x, func (dExt *DriverExt) FindTextsByOCR(ocrTexts []string, options ...DataOption) (points [][]float64, err error) { var bufSource *bytes.Buffer - if bufSource, err = dExt.TakeScreenShot(builtin.GenNameWithTimestamp("ocr_")); err != nil { + if bufSource, err = dExt.TakeScreenShot(builtin.GenNameWithTimestamp("step_%d_ocr")); err != nil { return } diff --git a/hrp/pkg/uixt/opencv.go b/hrp/pkg/uixt/opencv.go index 95e10783..98f7286b 100644 --- a/hrp/pkg/uixt/opencv.go +++ b/hrp/pkg/uixt/opencv.go @@ -103,7 +103,7 @@ func (dExt *DriverExt) FindAllImageRect(search string) (rects []image.Rectangle, if bufSearch, err = getBufFromDisk(search); err != nil { return nil, err } - if bufSource, err = dExt.TakeScreenShot(builtin.GenNameWithTimestamp("cv_")); err != nil { + if bufSource, err = dExt.TakeScreenShot(builtin.GenNameWithTimestamp("step_%d_cv")); err != nil { return nil, err } @@ -118,7 +118,7 @@ func (dExt *DriverExt) FindImageRectInUIKit(imagePath string, options ...DataOpt if bufSearch, err = getBufFromDisk(imagePath); err != nil { return 0, 0, 0, 0, err } - if bufSource, err = dExt.TakeScreenShot(builtin.GenNameWithTimestamp("cv_")); err != nil { + if bufSource, err = dExt.TakeScreenShot(builtin.GenNameWithTimestamp("step_%d_cv")); err != nil { return 0, 0, 0, 0, err } diff --git a/hrp/step_mobile_ui.go b/hrp/step_mobile_ui.go index 6cfb90d1..ff8b3a2c 100644 --- a/hrp/step_mobile_ui.go +++ b/hrp/step_mobile_ui.go @@ -602,7 +602,7 @@ func runStepMobileUI(s *SessionRunner, step *TStep) (stepResult *StepResult, err // take screenshot after each step _, err := uiDriver.TakeScreenShot( - builtin.GenNameWithTimestamp("step_") + "_" + step.Name) + builtin.GenNameWithTimestamp("step_%d_") + step.Name) if err != nil { log.Error().Err(err).Str("step", step.Name).Msg("take screenshot failed on step finished") }