diff --git a/hrp/step_ios_ui.go b/hrp/step_ios_ui.go index 5e744294..aca120e4 100644 --- a/hrp/step_ios_ui.go +++ b/hrp/step_ios_ui.go @@ -315,8 +315,15 @@ func (w *wdaClient) doAction(action MobileAction) error { return w.Driver.Tap(location[0], location[1]) } // click on xpath - if _, ok := action.Params.(string); ok { - return errActionNotImplemented + if xpath, ok := action.Params.(string); ok { + selector := gwda.BySelector{ + XPath: xpath, + } + ele, err := w.Driver.FindElement(selector) + if err != nil { + return errors.Wrap(err, "failed to find element") + } + return ele.Click() } return fmt.Errorf("invalid click params: %v", action.Params) case uiDoubleClick: @@ -346,6 +353,8 @@ func (w *wdaClient) doAction(action MobileAction) error { return fmt.Errorf("invalid swipe params: %v", params) } fromX, fromY, toX, toY = params[0], params[1], params[2], params[3] + } else { + return fmt.Errorf("invalid swipe params: %v", action.Params) } return w.Driver.Swipe(fromX, fromY, toX, toY) case uiInput: diff --git a/hrp/step_ui_test.go b/hrp/step_ui_test.go index 4e8ec019..c49c479d 100644 --- a/hrp/step_ui_test.go +++ b/hrp/step_ui_test.go @@ -32,7 +32,7 @@ func TestIOSAction(t *testing.T) { Config: NewConfig("ios ui action"), TestSteps: []IStep{ NewStep("launch douyin"). - IOS().Click("抖音"). + IOS().Click("//*[@label='抖音']"). Validate(). AssertTextExists("首页", "首页 tab 不存在"). AssertTextExists("消息", "消息 tab 不存在"), @@ -40,8 +40,6 @@ func TestIOSAction(t *testing.T) { IOS().SwipeUp().SwipeUp().SwipeDown(), }, } - tCase := testCase.ToTCase() - fmt.Println(tCase) err := NewRunner(t).Run(testCase) if err != nil {