mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-11 18:11:21 +08:00
1307 lines
27 KiB
Go
1307 lines
27 KiB
Go
//go:build localtest
|
|
|
|
package uixt
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
var uiaServerURL = "http://localhost:6790/wd/hub"
|
|
|
|
func TestDriver_NewSession(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
firstMatchEntry := make(map[string]interface{})
|
|
firstMatchEntry["package"] = "com.android.settings"
|
|
firstMatchEntry["activity"] = "com.android.settings/.Settings"
|
|
caps := Capabilities{
|
|
"firstMatch": []interface{}{firstMatchEntry},
|
|
"alwaysMatch": struct{}{},
|
|
}
|
|
session, err := driver.NewSession(caps)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(session.SessionId) == 0 {
|
|
t.Fatal("should not be empty")
|
|
}
|
|
}
|
|
|
|
func TestNewDriver(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
t.Log(driver.sessionId)
|
|
}
|
|
|
|
func TestDriver_Quit(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if err = driver.Close(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func TestDriver_Status(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
_, err = driver.Status()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func TestDriver_SessionIDs(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
sessions, err := driver.SessionIDs()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(sessions) == 0 {
|
|
t.Fatal("should have at least one")
|
|
}
|
|
t.Log(len(sessions), sessions)
|
|
}
|
|
|
|
func TestDriver_SessionDetails(t *testing.T) {
|
|
// firstMatchEntry := make(map[string]interface{})
|
|
// firstMatchEntry["package"] = "com.android.settings"
|
|
// firstMatchEntry["activity"] = "com.android.settings/.Settings"
|
|
// caps = Capabilities{
|
|
// "firstMatch": []interface{}{firstMatchEntry},
|
|
// "alwaysMatch": struct{}{},
|
|
// }
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
scrollData, err := driver.SessionDetails()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
t.Log(scrollData)
|
|
}
|
|
|
|
func TestDriver_Screenshot(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
screenshot, err := driver.Screenshot()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
t.Log(ioutil.WriteFile("/Users/hero/Desktop/s1.png", screenshot.Bytes(), 0o600))
|
|
}
|
|
|
|
func TestDriver_Orientation(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
orientation, err := driver.Orientation()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
t.Log(orientation)
|
|
}
|
|
|
|
func TestDriver_Rotation(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
rotation, err := driver.Rotation()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
t.Logf("x = %d\ty = %d\tz = %d", rotation.X, rotation.Y, rotation.Z)
|
|
}
|
|
|
|
func TestDriver_DeviceSize(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
deviceSize, err := driver.WindowSize()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
t.Logf("width = %d\theight = %d", deviceSize.Width, deviceSize.Height)
|
|
}
|
|
|
|
func TestDriver_Source(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
source, err := driver.Source()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
t.Log(source)
|
|
}
|
|
|
|
func TestDriver_BatteryInfo(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
batteryInfo, err := driver.BatteryInfo()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
t.Log(batteryInfo)
|
|
}
|
|
|
|
func TestDriver_GetAppiumSettings(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
appiumSettings, err := driver.GetAppiumSettings()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
for k := range appiumSettings {
|
|
t.Logf("key: %s\tvalue: %v", k, appiumSettings[k])
|
|
}
|
|
// t.Log(appiumSettings)
|
|
}
|
|
|
|
func TestDriver_DeviceScaleRatio(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
scaleRatio, err := driver.Scale()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
t.Log(scaleRatio)
|
|
}
|
|
|
|
func TestDriver_DeviceInfo(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
devInfo, err := driver.DeviceInfo()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
t.Logf("api version: %s", devInfo.APIVersion)
|
|
t.Logf("platform version: %s", devInfo.PlatformVersion)
|
|
t.Logf("bluetooth state: %s", devInfo.Bluetooth.State)
|
|
}
|
|
|
|
func TestDriver_AlertText(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
alertText, err := driver.AlertText()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
t.Log(alertText)
|
|
}
|
|
|
|
func TestDriver_Tap(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
err = driver.Tap(150, 340)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
time.Sleep(time.Second)
|
|
|
|
err = driver.TapFloat(60.5, 125.5)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
time.Sleep(time.Second)
|
|
}
|
|
|
|
func TestDriver_Swipe(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
err = driver.Swipe(400, 1000, 400, 500)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
err = driver.SwipeFloat(400, 555.5, 400, 1255.5)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func TestDriver_Drag(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
err = driver.Drag(400, 260, 400, 500)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
time.Sleep(time.Millisecond * 200)
|
|
|
|
err = driver.DragFloat(400, 501.5, 400, 261.5)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
time.Sleep(time.Millisecond * 200)
|
|
}
|
|
|
|
func TestDriver_SendKeys(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
err = driver.SendKeys("abc")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
time.Sleep(time.Second * 2)
|
|
|
|
err = driver.SendKeys("def")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
time.Sleep(time.Second * 2)
|
|
|
|
err = driver.SendKeys("\\n")
|
|
// err = driver.SendKeys(`\n`, false)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
//func TestDriver_PressBack(t *testing.T) {
|
|
// driver, err := NewUIADriver(nil, uiaServerURL)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// err = driver.PressBack()
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//}
|
|
|
|
//func TestDriver_PressKeyCode(t *testing.T) {
|
|
// driver, err := NewUIADriver(nil, uiaServerURL)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// err = driver.PressKeyCodeAsync(KCx)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// err = driver.PressKeyCodeAsync(KCx, KMCapLocked)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// // err = driver.PressKeyCodeAsync(KCExplorer)
|
|
// // if err != nil {
|
|
// // t.Fatal(err)
|
|
// // }
|
|
//
|
|
// err = driver.PressKeyCode(KCExplorer, KMEmpty)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//}
|
|
|
|
//func TestDriver_LongPressKeyCode(t *testing.T) {
|
|
// driver, err := NewUIADriver(nil, uiaServerURL)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// err = driver.LongPressKeyCode(KCAt, KMEmpty)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//}
|
|
//
|
|
//func TestDriver_TouchDown(t *testing.T) {
|
|
// driver, err := NewUIADriver(nil, uiaServerURL)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// doTouchUp := func() {
|
|
// err = driver.TouchUp(400, 260)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// }
|
|
//
|
|
// err = driver.TouchDown(400, 260)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// // _ = driver.TapPoint(Point{400, 500})
|
|
// doTouchUp()
|
|
//
|
|
// err = driver.TouchDownPoint(Point{400, 260})
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// doTouchUp()
|
|
//}
|
|
//
|
|
//func TestDriver_TouchUp(t *testing.T) {
|
|
// driver, err := NewUIADriver(nil, uiaServerURL)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// err = driver.TouchDown(400, 260)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// // err = driver.TouchUp(400, 260)
|
|
// err = driver.TouchUpPoint(Point{400, 260})
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//}
|
|
//
|
|
//func TestDriver_TouchMove(t *testing.T) {
|
|
// driver, err := NewUIADriver(nil, uiaServerURL)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// doTouchDown := func(x, y int) {
|
|
// err = driver.TouchDown(x, y)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// }
|
|
//
|
|
// doTouchUp := func(x, y int) {
|
|
// err = driver.TouchUp(x, y)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// }
|
|
//
|
|
// doTouchDown(400, 260)
|
|
//
|
|
// err = driver.TouchMove(400, 500)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// doTouchUp(400, 500)
|
|
//
|
|
// doTouchDown(400, 500)
|
|
//
|
|
// err = driver.TouchMove(400, 260)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// doTouchUp(400, 260)
|
|
//}
|
|
//
|
|
//func TestDriver_OpenNotification(t *testing.T) {
|
|
// driver, err := NewUIADriver(nil, uiaServerURL)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// err = driver.OpenNotification()
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//}
|
|
//
|
|
//func TestDriver_Flick(t *testing.T) {
|
|
// driver, err := NewUIADriver(nil, uiaServerURL)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// err = driver.Flick(50, -100)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//}
|
|
//
|
|
//func TestDriver_ScrollTo(t *testing.T) {
|
|
// driver, err := NewUIADriver(nil, uiaServerURL)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// err = driver.ScrollTo(BySelector{ClassName: "android.widget.SeekBar"})
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//}
|
|
|
|
//func TestDriver_MultiPointerGesture(t *testing.T) {
|
|
// driver, err := NewUIADriver(nil, uiaServerURL)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// gesture1 := NewTouchAction().Add(150, 340, 0.35).AddFloat(50, 300)
|
|
// gesture2 := NewTouchAction().Add(200, 340).AddFloat(300, 300)
|
|
// gesture3 := NewTouchAction().Add(300, 500).AddFloat(350, 500).AddPoint(Point{300, 550}).AddPointF(PointF{350, 550})
|
|
// _ = gesture3
|
|
//
|
|
// // err = driver.MultiPointerGesture(gesture1, gesture2)
|
|
// err = driver.MultiPointerGesture(gesture1, gesture2, gesture3)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//}
|
|
//
|
|
//func TestDriver_PerformW3CActions(t *testing.T) {
|
|
// driver, err := NewUIADriver(nil, uiaServerURL)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// // actionKey := NewW3CAction(ATKey, NewW3CGestures().KeyDown("g").KeyUp("g").Pause().KeyDown("o").KeyUp("o"))
|
|
// // actionKey := NewW3CAction(ATKey, NewW3CGestures().SendKeys("golang"))
|
|
// // err = driver.PerformW3CActions(actionKey)
|
|
// // if err != nil {
|
|
// // t.Fatal(err)
|
|
// // }
|
|
//
|
|
// // var queryField map[string]string
|
|
// // queryField = make(map[string]string)
|
|
// // {
|
|
// // queryField = map[string]string{
|
|
// // "a": "",
|
|
// // }
|
|
// // }
|
|
//
|
|
// elem, err := driver.FindElement(BySelector{ResourceIdID: "com.android.settings:id/search"})
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// // actionPointer := NewW3CAction(ATPointer, NewW3CGestures().PointerMove(0, 0, elem.id).PointerDown().Pause(3).PointerUp())
|
|
// // actionPointer := NewW3CAction(ATPointer,
|
|
// // NewW3CGestures().PointerMove(400, 500, "viewport").PointerDown().Pause(2).
|
|
// // PointerMove(0, 0, elem.id).Pause(2).
|
|
// // PointerMove(20, 0, "pointer").Pause(2).
|
|
// // PointerUp(),
|
|
// // )
|
|
// actionPointer := NewW3CAction(ATPointer,
|
|
// NewW3CGestures().PointerMoveTo(400, 500).PointerDown().
|
|
// PointerMouseOver(0, 0, elem).
|
|
// PointerMoveRelative(20, 0).PointerUp())
|
|
// err = driver.PerformW3CActions(actionPointer)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//}
|
|
//
|
|
//func TestDriver_GetClipboard(t *testing.T) {
|
|
// driver, err := NewUIADriver(nil, uiaServerURL)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// text, err := driver.GetClipboard()
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// t.Log(text)
|
|
//}
|
|
//
|
|
//func TestDriver_SetClipboard(t *testing.T) {
|
|
// driver, err := NewUIADriver(nil, uiaServerURL)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// content := "test123"
|
|
// err = driver.SetClipboard(ClipDataTypePlaintext, content)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// text, err := driver.GetClipboard()
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// if text != content {
|
|
// t.Fatal("should be the same")
|
|
// }
|
|
//}
|
|
|
|
func TestDriver_AlertAccept(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
err = driver.AlertAccept()
|
|
// err = driver.AlertAccept("是")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func TestDriver_AlertDismiss(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
// err = driver.AlertDismiss()
|
|
err = driver.AlertDismiss("否")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
//func TestDriver_SetAppiumSettings(t *testing.T) {
|
|
// driver, err := NewUIADriver(nil, uiaServerURL)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// appiumSettings, err := driver.GetAppiumSettings()
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// sdopd := appiumSettings["shutdownOnPowerDisconnect"]
|
|
// t.Log("shutdownOnPowerDisconnect:", sdopd)
|
|
//
|
|
// err = driver.SetAppiumSettings(map[string]interface{}{"shutdownOnPowerDisconnect": !sdopd.(bool)})
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// appiumSettings, err = driver.GetAppiumSettings()
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// if appiumSettings["shutdownOnPowerDisconnect"] == sdopd.(bool) {
|
|
// t.Fatal("should not be equal")
|
|
// }
|
|
// t.Log("shutdownOnPowerDisconnect:", appiumSettings["shutdownOnPowerDisconnect"])
|
|
//}
|
|
|
|
func TestDriver_SetOrientation(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
err = driver.SetOrientation(OrientationLandscapeLeft)
|
|
// err = driver.SetOrientation(OrientationPortrait)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func TestDriver_SetRotation(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
// err = driver.SetRotation(Rotation{Z: 0})
|
|
err = driver.SetRotation(Rotation{Z: 270})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
//func TestDriver_NetworkConnection(t *testing.T) {
|
|
// driver, err := NewUIADriver(nil, uiaServerURL)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// err = driver.NetworkConnection(NetworkTypeWifi)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//}
|
|
|
|
func TestDriver_FindElement(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
elem, err := driver.FindElement(BySelector{ResourceIdID: "android:id/content"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
e := ElementAttribute{}.WithLabel("class")
|
|
t.Log(elem.GetAttribute(e))
|
|
}
|
|
|
|
func TestDriver_FindElements(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
// elements, err := driver.FindElements(BySelector{ResourceIdID: "com.android.settings:id/title"})
|
|
elements, err := driver.FindElements(BySelector{UiAutomator: "new UiSelector().textStartsWith(\"应\");"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
t.Log(len(elements))
|
|
}
|
|
|
|
func TestDriver_WaitWithTimeoutAndInterval(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
element, err := driver.FindElement(BySelector{UiAutomator: "new UiSelector().className(\"android.view.ViewGroup\");"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
elem, err := element.FindElement(BySelector{UiAutomator: "new UiSelector().className(\"android.widget.LinearLayout\").index(6);"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
rect, err := elem.Rect()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
x := rect.X + int(float64(rect.Width)*2)
|
|
y := rect.Y + rect.Height/2
|
|
err = driver.Tap(x, y)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
by := BySelector{UiAutomator: "new UiSelector().text(\"科技\");"}
|
|
exists := func(d WebDriver) (bool, error) {
|
|
element, err = d.FindElement(by)
|
|
if err == nil {
|
|
return true, nil
|
|
}
|
|
return false, nil
|
|
}
|
|
|
|
err = driver.WaitWithTimeoutAndInterval(exists, 1, 1)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
// element, err = driver.FindElement(by)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
|
|
err = element.Click()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
//func TestDriver_ActiveElement(t *testing.T) {
|
|
// device, _ := NewAndroidDevice()
|
|
// driver, err := device.NewUSBDriver(nil)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// defer func() {
|
|
// _ = driver.Dispose()
|
|
// }()
|
|
//
|
|
// element, err := driver.ActiveElement()
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// if err = element.SendKeys("test"); err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//}
|
|
|
|
func TestUiSelectorHelper_NewUiSelectorHelper(t *testing.T) {
|
|
uiSelector := NewUiSelectorHelper().Text("a").String()
|
|
if uiSelector != `new UiSelector().text("a");` {
|
|
t.Fatal("[ERROR]", uiSelector)
|
|
}
|
|
|
|
uiSelector = NewUiSelectorHelper().Text("a").TextStartsWith("b").String()
|
|
if uiSelector != `new UiSelector().text("a").textStartsWith("b");` {
|
|
t.Fatal("[ERROR]", uiSelector)
|
|
}
|
|
|
|
uiSelector = NewUiSelectorHelper().ClassName("android.widget.LinearLayout").Index(6).String()
|
|
if uiSelector != `new UiSelector().className("android.widget.LinearLayout").index(6);` {
|
|
t.Fatal("[ERROR]", uiSelector)
|
|
}
|
|
|
|
uiSelector = NewUiSelectorHelper().Focused(false).Instance(6).String()
|
|
if uiSelector != `new UiSelector().focused(false).instance(6);` {
|
|
t.Fatal("[ERROR]", uiSelector)
|
|
}
|
|
|
|
uiSelector = NewUiSelectorHelper().ChildSelector(NewUiSelectorHelper().Enabled(true)).String()
|
|
if uiSelector != `new UiSelector().childSelector(new UiSelector().enabled(true));` {
|
|
t.Fatal("[ERROR]", uiSelector)
|
|
}
|
|
}
|
|
|
|
func Test_getFreePort(t *testing.T) {
|
|
freePort, err := getFreePort()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
t.Log(freePort)
|
|
}
|
|
|
|
func TestDeviceList(t *testing.T) {
|
|
devices, err := DeviceList()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
for i := range devices {
|
|
t.Log(devices[i].Serial())
|
|
}
|
|
}
|
|
|
|
//func TestAndroidNewUSBDriver(t *testing.T) {
|
|
// device, _ := NewAndroidDevice()
|
|
// driver, err := device.NewUSBDriver(nil)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// defer driver.Dispose()
|
|
//
|
|
// ready, err := driver.Status()
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// if !ready {
|
|
// t.Fatal("should be 'true'")
|
|
// }
|
|
//}
|
|
|
|
//func TestDriver_ActiveAppPackageName(t *testing.T) {
|
|
// device, _ := NewAndroidDevice()
|
|
// driver, err := device.NewUSBDriver(nil)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// defer driver.Dispose()
|
|
//
|
|
// appPackageName, err := driver.ActiveAppPackageName()
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// t.Log(appPackageName)
|
|
//}
|
|
|
|
func TestDriver_AppLaunch(t *testing.T) {
|
|
device, _ := NewAndroidDevice()
|
|
driver, err := device.NewUSBDriver(nil)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
err = driver.AppLaunch("com.android.settings")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
// screenshot, err := driver.Screenshot()
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// t.Log(ioutil.WriteFile("/Users/hero/Desktop/s1.png", screenshot.Bytes(), 0600))
|
|
}
|
|
|
|
func TestDriver_AppTerminate(t *testing.T) {
|
|
device, _ := NewAndroidDevice()
|
|
driver, err := device.NewUSBDriver(nil)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer driver.Dispose()
|
|
|
|
_, err = driver.AppTerminate("tv.danmaku.bili")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
//func TestNewWiFiDriver(t *testing.T) {
|
|
// device, _ := NewAndroidDevice(WithAdbIP("192.168.1.28"))
|
|
// driver, err := device.NewHTTPDriver(nil)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// // SetDebug(false, true)
|
|
// _, err = driver.ActiveAppActivity()
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//}
|
|
|
|
//func TestDriver_AppInstall(t *testing.T) {
|
|
// device, _ := NewAndroidDevice()
|
|
// driver, err := device.NewUSBDriver(nil)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// defer driver.Dispose()
|
|
//
|
|
// err = driver.AppInstall("/Users/hero/Desktop/xuexi_android_10002068.apk")
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//}
|
|
|
|
//func TestDriver_AppUninstall(t *testing.T) {
|
|
// device, _ := NewAndroidDevice()
|
|
// driver, err := device.NewUSBDriver(nil)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
// defer driver.Dispose()
|
|
//
|
|
// err = driver.AppUninstall("cn.xuexi.android")
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//}
|
|
|
|
func TestBySelector_getMethodAndSelector(t *testing.T) {
|
|
testVal := "test id"
|
|
bySelector := BySelector{ResourceIdID: testVal}
|
|
method, selector := bySelector.getMethodAndSelector()
|
|
if method != "id" || selector != testVal {
|
|
t.Fatal(method, "=", selector)
|
|
}
|
|
|
|
bySelector = BySelector{ContentDescription: testVal}
|
|
method, selector = bySelector.getMethodAndSelector()
|
|
if method != "accessibility id" || selector != testVal {
|
|
t.Fatal(method, "=", selector)
|
|
}
|
|
}
|
|
|
|
func TestElement_Text(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
elem, err := driver.FindElement(BySelector{ResourceIdID: "com.android.settings:id/category_title"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
text, err := elem.Text()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
t.Log(text)
|
|
}
|
|
|
|
func TestElement_GetAttribute(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
elem, err := driver.FindElement(BySelector{ResourceIdID: "com.android.settings:id/category_title"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
e := ElementAttribute{}.WithName("class")
|
|
attribute, err := elem.GetAttribute(e)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
t.Log(attribute)
|
|
}
|
|
|
|
//func TestElement_ContentDescription(t *testing.T) {
|
|
// driver, err := NewUIADriver(nil, uiaServerURL)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// elem, err := driver.FindElement(BySelector{ResourceIdID: "com.android.settings:id/search"})
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// name, err := elem.ContentDescription()
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// t.Log(name)
|
|
//}
|
|
|
|
func TestElement_Size(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
elem, err := driver.FindElement(BySelector{ResourceIdID: "com.android.settings:id/search"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
size, err := elem.Size()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
t.Log(size)
|
|
}
|
|
|
|
func TestElement_Rect(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
elem, err := driver.FindElement(BySelector{ResourceIdID: "com.android.settings:id/category_title"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
rect, err := elem.Rect()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
t.Log(rect)
|
|
}
|
|
|
|
func TestElement_Screenshot(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
elem, err := driver.FindElement(BySelector{ResourceIdID: "com.android.settings:id/category_title"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
screenshot, err := elem.Screenshot()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
t.Log(ioutil.WriteFile("/Users/hero/Desktop/e1.png", screenshot.Bytes(), 0o600))
|
|
}
|
|
|
|
func TestElement_Location(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
elem, err := driver.FindElement(BySelector{ResourceIdID: "com.android.settings:id/category_title"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
location, err := elem.Location()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
t.Log(location)
|
|
}
|
|
|
|
func TestElement_Click(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
elem, err := driver.FindElement(BySelector{ResourceIdID: "com.android.settings:id/title"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
err = elem.Click()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func TestElement_Clear(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
elem, err := driver.FindElement(BySelector{ResourceIdID: "android:id/search_src_text"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
err = elem.Clear()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func TestElement_SendKeys(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
elem, err := driver.FindElement(BySelector{ResourceIdID: "android:id/search_src_text"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
// return
|
|
|
|
// err = elem.SendKeys("abc")
|
|
err = elem.SendKeys("456")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func TestElement_FindElements(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
parentElem, err := driver.FindElement(BySelector{ResourceIdID: "com.android.settings:id/main_content"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
elements, err := parentElem.FindElements(BySelector{ResourceIdID: "com.android.settings:id/category"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
t.Log(len(elements))
|
|
}
|
|
|
|
func TestElement_FindElement(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
parentElem, err := driver.FindElement(BySelector{ResourceIdID: "com.android.settings:id/main_content"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
elem, err := parentElem.FindElement(BySelector{ResourceIdID: "com.android.settings:id/category_title"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
t.Log(elem.Text())
|
|
}
|
|
|
|
func TestElement_Swipe(t *testing.T) {
|
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
elem, err := driver.FindElement(BySelector{ResourceIdID: "com.android.settings:id/category_title"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
rect, err := elem.Rect()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
t.Log(rect)
|
|
|
|
var startX, startY, endX, endY int
|
|
startX = rect.X + rect.Width/20
|
|
startY = rect.Y + rect.Height/2
|
|
endX = startX
|
|
endY = startY - startY/2
|
|
err = elem.Swipe(startX, startY, endX, endY)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
//func TestElement_Drag(t *testing.T) {
|
|
// driver, err := NewUIADriver(nil, uiaServerURL)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// elements, err := driver.FindElements(BySelector{ClassName: "android.widget.TextView"})
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// for i, elem := range elements {
|
|
// text, _ := elem.Text()
|
|
// t.Log(i, text)
|
|
// }
|
|
//
|
|
// rect, err := elements[0].Rect()
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// // err = elements[0].Drag(300, 450, 256)
|
|
// err = elements[0].Drag(300, 450, 256)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// err = elements[0].DragTo(elements[1], 256)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// endPoint := PointF{X: float64(rect.X + rect.Width/3*2), Y: float64(rect.Y + rect.Height/2)}
|
|
// err = elements[0].DragPointF(endPoint, 256)
|
|
// if err != nil {
|
|
// t.Fatal()
|
|
// }
|
|
//}
|
|
|
|
//func TestElement_Flick(t *testing.T) {
|
|
// driver, err := NewUIADriver(nil, uiaServerURL)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// elem, err := driver.FindElement(BySelector{UiAutomator: "new UiSelector().text(\"提示音和通知\");"})
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// err = elem.Flick(36, 20, 100)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//}
|
|
|
|
//func TestElement_ScrollTo(t *testing.T) {
|
|
// driver, err := NewUIADriver(nil, uiaServerURL)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// // how to make it work?
|
|
// // parentElem, err := driver.FindElement(BySelector{ClassName: "android.widget.ScrollView"})
|
|
// // parentElem, err := driver.FindElement(BySelector{ResourceIdID: "com.cyanogenmod.filemanager:id/navigation_view_layout"})
|
|
// parentElem, err := driver.FindElement(BySelector{ResourceIdID: "com.android.settings:id/dashboard"})
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// err = parentElem.ScrollTo(BySelector{ContentDescription: "电池"})
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//}
|
|
|
|
//func TestElement_ScrollToElement(t *testing.T) {
|
|
// // android.widget.HorizontalScrollView
|
|
// driver, err := NewUIADriver(nil, uiaServerURL)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// // how to make it work?
|
|
// parentElem, err := driver.FindElement(BySelector{UiAutomator: "new UiSelector().resourceId(\"com.android.settings:id/dashboard\");"})
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// element, err := driver.FindElement(BySelector{UiAutomator: "new UiSelector().text(\"电池\");"})
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//
|
|
// err = parentElem.ScrollToElement(element)
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
//}
|