mirror of
https://github.com/httprunner/httprunner.git
synced 2026-09-08 17:09:33 +08:00
feat: add GetCurrentWindow() for Android device
This commit is contained in:
@@ -1 +1 @@
|
|||||||
v5.0.0+2411192114
|
v5.0.0+2411201136
|
||||||
|
|||||||
@@ -465,6 +465,24 @@ func (dev *AndroidDevice) installCommon(apkPath string, args ...string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dev *AndroidDevice) GetCurrentWindow() (windowInfo WindowInfo, err error) {
|
||||||
|
output, err := dev.d.RunShellCommand("dumpsys", "window", "|", "grep", "mCurrentFocus")
|
||||||
|
if err != nil {
|
||||||
|
return WindowInfo{}, errors.Wrap(err, "get current window failed")
|
||||||
|
}
|
||||||
|
// mCurrentFocus=Window{a33bc55 u0 com.miui.home/com.miui.home.launcher.Launcher}
|
||||||
|
re := regexp.MustCompile(`mCurrentFocus=Window{.*? (\S+)/(\S+)}`)
|
||||||
|
matches := re.FindStringSubmatch(output)
|
||||||
|
if len(matches) != 3 {
|
||||||
|
return WindowInfo{}, errors.New("failed to extract current window")
|
||||||
|
}
|
||||||
|
windowInfo = WindowInfo{
|
||||||
|
PackageName: matches[1],
|
||||||
|
Activity: matches[2],
|
||||||
|
}
|
||||||
|
return windowInfo, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (dev *AndroidDevice) GetPackageInfo(packageName string) (AppInfo, error) {
|
func (dev *AndroidDevice) GetPackageInfo(packageName string) (AppInfo, error) {
|
||||||
appInfo := AppInfo{
|
appInfo := AppInfo{
|
||||||
Name: packageName,
|
Name: packageName,
|
||||||
|
|||||||
@@ -42,6 +42,14 @@ func TestAndroidDevice_GetPackageInfo(t *testing.T) {
|
|||||||
t.Log(appInfo)
|
t.Log(appInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestAndroidDevice_GetCurrentWindow(t *testing.T) {
|
||||||
|
device, err := NewAndroidDevice()
|
||||||
|
checkErr(t, err)
|
||||||
|
windowInfo, err := device.GetCurrentWindow()
|
||||||
|
checkErr(t, err)
|
||||||
|
t.Logf("packageName: %s\tactivityName: %s", windowInfo.PackageName, windowInfo.Activity)
|
||||||
|
}
|
||||||
|
|
||||||
func TestDriver_NewSession(t *testing.T) {
|
func TestDriver_NewSession(t *testing.T) {
|
||||||
driver, err := NewUIADriver(nil, uiaServerURL)
|
driver, err := NewUIADriver(nil, uiaServerURL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -172,3 +172,7 @@ func (dev *HarmonyDevice) Uninstall(packageName string) error {
|
|||||||
func (dev *HarmonyDevice) GetPackageInfo(packageName string) (AppInfo, error) {
|
func (dev *HarmonyDevice) GetPackageInfo(packageName string) (AppInfo, error) {
|
||||||
return AppInfo{}, nil
|
return AppInfo{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dev *HarmonyDevice) GetCurrentWindow() (WindowInfo, error) {
|
||||||
|
return WindowInfo{}, nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -254,6 +254,11 @@ type AppInfo struct {
|
|||||||
AppBaseInfo
|
AppBaseInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type WindowInfo struct {
|
||||||
|
PackageName string `json:"packageName,omitempty"`
|
||||||
|
Activity string `json:"activity,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
type AppBaseInfo struct {
|
type AppBaseInfo struct {
|
||||||
Pid int `json:"pid,omitempty"`
|
Pid int `json:"pid,omitempty"`
|
||||||
BundleId string `json:"bundleId,omitempty"` // ios package name
|
BundleId string `json:"bundleId,omitempty"` // ios package name
|
||||||
@@ -495,6 +500,7 @@ type IDevice interface {
|
|||||||
Uninstall(packageName string) error
|
Uninstall(packageName string) error
|
||||||
|
|
||||||
GetPackageInfo(packageName string) (AppInfo, error)
|
GetPackageInfo(packageName string) (AppInfo, error)
|
||||||
|
GetCurrentWindow() (windowInfo WindowInfo, err error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type ForegroundApp struct {
|
type ForegroundApp struct {
|
||||||
|
|||||||
@@ -771,3 +771,7 @@ func (dev *IOSDevice) GetPackageInfo(packageName string) (AppInfo, error) {
|
|||||||
}
|
}
|
||||||
return appInfo, errors.New("failed to get package version")
|
return appInfo, errors.New("failed to get package version")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (dev *IOSDevice) GetCurrentWindow() (WindowInfo, error) {
|
||||||
|
return WindowInfo{}, nil
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user