mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-12 10:29:39 +08:00
change: add back action of mobile ui automation
This commit is contained in:
@@ -233,9 +233,12 @@ func (ud *uiaDriver) Scale() (scale float64, err error) {
|
||||
}
|
||||
|
||||
// PressBack simulates a short press on the BACK button.
|
||||
func (ud *uiaDriver) PressBack() (err error) {
|
||||
func (ud *uiaDriver) PressBack(options ...DataOption) (err error) {
|
||||
// register(postHandler, new PressBack("/wd/hub/session/:sessionId/back"))
|
||||
_, err = ud.httpPOST(nil, "/session", ud.sessionId, "back")
|
||||
if err != nil {
|
||||
_, err = ud.adbDevice.RunShellCommand("input", "keyevent", "4")
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -53,6 +53,7 @@ const (
|
||||
ACTION_DoubleTap MobileMethod = "double_tap"
|
||||
ACTION_Swipe MobileMethod = "swipe"
|
||||
ACTION_Input MobileMethod = "input"
|
||||
ACTION_Back MobileMethod = "back"
|
||||
|
||||
// custom actions
|
||||
ACTION_SwipeToTapApp MobileMethod = "swipe_to_tap_app" // swipe left & right to find app and tap
|
||||
@@ -618,6 +619,8 @@ func (dExt *DriverExt) DoAction(action MobileAction) error {
|
||||
options = append(options, WithDataIdentifier(action.Identifier))
|
||||
}
|
||||
return dExt.Driver.Input(param, options...)
|
||||
case ACTION_Back:
|
||||
return dExt.Driver.PressBack()
|
||||
case CtlSleep:
|
||||
if param, ok := action.Params.(json.Number); ok {
|
||||
seconds, _ := param.Float64()
|
||||
@@ -651,10 +654,10 @@ func (dExt *DriverExt) DoAction(action MobileAction) error {
|
||||
}
|
||||
|
||||
func (dExt *DriverExt) getAbsScope(x1, y1, x2, y2 float64) (int, int, int, int) {
|
||||
return int(x1 * float64(dExt.windowSize.Width) * dExt.scale),
|
||||
int(y1 * float64(dExt.windowSize.Height) * dExt.scale),
|
||||
int(x2 * float64(dExt.windowSize.Width) * dExt.scale),
|
||||
int(y2 * float64(dExt.windowSize.Height) * dExt.scale)
|
||||
return int(x1 * float64(dExt.windowSize.Width)),
|
||||
int(y1 * float64(dExt.windowSize.Height)),
|
||||
int(x2 * float64(dExt.windowSize.Width)),
|
||||
int(y2 * float64(dExt.windowSize.Height))
|
||||
}
|
||||
|
||||
func (dExt *DriverExt) DoValidation(check, assert, expected string, message ...string) bool {
|
||||
|
||||
@@ -1046,6 +1046,9 @@ type WebDriver interface {
|
||||
// PressButton Presses the corresponding hardware button on the device
|
||||
PressButton(devBtn DeviceButton) error
|
||||
|
||||
// PressBack Presses the back button
|
||||
PressBack(options ...DataOption) error
|
||||
|
||||
// IOHIDEvent Emulated triggering of the given low-level IOHID device event.
|
||||
// duration: The event duration in float seconds (XCTest uses 0.005 for a single press event)
|
||||
IOHIDEvent(pageID EventPageID, usageID EventUsageID, duration ...float64) error
|
||||
|
||||
@@ -526,6 +526,27 @@ func (wd *wdaDriver) KeyboardDismiss(keyNames ...string) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
// PressBack simulates a short press on the BACK button.
|
||||
func (wd *wdaDriver) PressBack(options ...DataOption) (err error) {
|
||||
windowSize, err := wd.WindowSize()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
data := map[string]interface{}{
|
||||
"fromX": float64(windowSize.Width) * 0,
|
||||
"fromY": float64(windowSize.Height) * 0.5,
|
||||
"toX": float64(windowSize.Width) * 0.6,
|
||||
"toY": float64(windowSize.Height) * 0.5,
|
||||
}
|
||||
|
||||
// new data options in post data for extra WDA configurations
|
||||
d := NewData(data, options...)
|
||||
|
||||
_, err = wd.httpPOST(d.Data, "/session", wd.sessionId, "/wda/dragfromtoforduration")
|
||||
return
|
||||
}
|
||||
|
||||
func (wd *wdaDriver) PressButton(devBtn DeviceButton) (err error) {
|
||||
// [[FBRoute POST:@"/wda/pressButton"] respondWithTarget:self action:@selector(handlePressButtonCommand:)]
|
||||
data := map[string]interface{}{"name": devBtn}
|
||||
|
||||
Reference in New Issue
Block a user