diff --git a/examples/uitest/demo_douyin_live.json b/examples/uitest/demo_douyin_live.json index 5ad7f471..c86466ad 100644 --- a/examples/uitest/demo_douyin_live.json +++ b/examples/uitest/demo_douyin_live.json @@ -1,6 +1,9 @@ { "config": { "name": "通过 feed 卡片进入抖音直播间", + "variables": { + "app_name": "抖音" + }, "ios": [ { "port": 8700, @@ -23,7 +26,7 @@ }, { "method": "swipe_to_tap_app", - "params": "抖音", + "params": "$app_name", "max_retry_times": 5 }, { diff --git a/examples/uitest/demo_douyin_live.yaml b/examples/uitest/demo_douyin_live.yaml index b5252943..1b4b276b 100644 --- a/examples/uitest/demo_douyin_live.yaml +++ b/examples/uitest/demo_douyin_live.yaml @@ -1,5 +1,7 @@ config: name: 通过 feed 卡片进入抖音直播间 + variables: + app_name: 抖音 ios: - port: 8700 mjpeg_port: 8800 @@ -12,7 +14,7 @@ teststeps: - method: app_terminate params: com.ss.iphone.ugc.Aweme - method: swipe_to_tap_app - params: 抖音 + params: $app_name max_retry_times: 5 - method: sleep params: 5 diff --git a/examples/uitest/demo_douyin_test.go b/examples/uitest/demo_douyin_test.go index b5adf5ff..7c9a3c59 100644 --- a/examples/uitest/demo_douyin_test.go +++ b/examples/uitest/demo_douyin_test.go @@ -10,13 +10,16 @@ import ( func TestIOSDouyinLive(t *testing.T) { testCase := &hrp.TestCase{ Config: hrp.NewConfig("通过 feed 卡片进入抖音直播间"). + WithVariables(map[string]interface{}{ + "app_name": "抖音", + }). SetIOS(hrp.WithLogOn(true), hrp.WithPort(8700), hrp.WithMjpegPort(8800)), TestSteps: []hrp.IStep{ hrp.NewStep("启动抖音"). IOS(). Home(). AppTerminate("com.ss.iphone.ugc.Aweme"). // 关闭已运行的抖音 - SwipeToTapApp("抖音", hrp.WithMaxRetryTimes(5)).Sleep(5). + SwipeToTapApp("$app_name", hrp.WithMaxRetryTimes(5)).Sleep(5). Validate(). AssertOCRExists("推荐", "抖音启动失败,「推荐」不存在"), // hrp.NewStep("处理青少年弹窗"). diff --git a/go.mod b/go.mod index 9148a7aa..3b02532a 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,6 @@ require ( github.com/electricbubble/opencv-helper v0.0.3 github.com/fatih/color v1.13.0 github.com/getsentry/sentry-go v0.13.0 - github.com/go-errors/errors v1.4.2 github.com/go-openapi/spec v0.20.7 github.com/go-ping/ping v1.1.0 github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 @@ -43,6 +42,7 @@ require ( github.com/cespare/xxhash/v2 v2.1.2 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect + github.com/go-errors/errors v1.4.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-openapi/jsonpointer v0.19.5 // indirect github.com/go-openapi/jsonreference v0.20.0 // indirect diff --git a/hrp/internal/boomer/runner.go b/hrp/internal/boomer/runner.go index 506e3dc5..4bde3a03 100644 --- a/hrp/internal/boomer/runner.go +++ b/hrp/internal/boomer/runner.go @@ -10,9 +10,9 @@ import ( "sync/atomic" "time" - "github.com/go-errors/errors" "github.com/jinzhu/copier" "github.com/olekukonko/tablewriter" + "github.com/pkg/errors" "github.com/rs/zerolog/log" "github.com/httprunner/httprunner/v4/hrp/internal/boomer/grpc/messager" diff --git a/hrp/step_ios_ui.go b/hrp/step_ios_ui.go index 46b43a04..c53b06ca 100644 --- a/hrp/step_ios_ui.go +++ b/hrp/step_ios_ui.go @@ -4,6 +4,7 @@ import ( "fmt" "time" + "github.com/pkg/errors" "github.com/rs/zerolog/log" "github.com/httprunner/httprunner/v4/hrp/internal/uixt" @@ -512,6 +513,13 @@ func runStepIOS(s *SessionRunner, step *TStep) (stepResult *StepResult, err erro } screenshots := make([]string, 0) + // override step variables + stepVariables, err := s.MergeStepVariables(step.Variables) + if err != nil { + return + } + parser := s.GetParser() + // init wdaClient driver wdaClient, err := s.hrpRunner.initUIClient(&step.IOS.IOSDevice) if err != nil { @@ -557,6 +565,9 @@ func runStepIOS(s *SessionRunner, step *TStep) (stepResult *StepResult, err erro // run actions for _, action := range actions { + if action.Params, err = parser.Parse(action.Params, stepVariables); err != nil { + return stepResult, errors.Wrap(err, "parse action params failed") + } if err := wdaClient.DoAction(action); err != nil { return stepResult, err }