diff --git a/internal/version/VERSION b/internal/version/VERSION index 4ed7a272..18de5b29 100644 --- a/internal/version/VERSION +++ b/internal/version/VERSION @@ -1 +1 @@ -v5.0.0+2502121658 +v5.0.0+2502141035 diff --git a/pkg/uixt/android_driver_adb.go b/pkg/uixt/android_driver_adb.go index e207454e..f3b26307 100644 --- a/pkg/uixt/android_driver_adb.go +++ b/pkg/uixt/android_driver_adb.go @@ -40,6 +40,9 @@ func NewADBDriver(device *AndroidDevice) (*ADBDriver, error) { type ADBDriver struct { Device *AndroidDevice Session *Session + + // cache to avoid repeated query + windowSize types.Size } func (ad *ADBDriver) runShellCommand(cmd string, args ...string) (output string, err error) { @@ -138,9 +141,9 @@ func (ad *ADBDriver) getWindowSize() (size types.Size, err error) { } func (ad *ADBDriver) WindowSize() (size types.Size, err error) { - if !ad.Session.windowSize.IsNil() { + if !ad.windowSize.IsNil() { // use cached window size - return ad.Session.windowSize, nil + return ad.windowSize, nil } size, err = ad.getWindowSize() @@ -159,7 +162,7 @@ func (ad *ADBDriver) WindowSize() (size types.Size, err error) { size.Width, size.Height = size.Height, size.Width } - ad.Session.windowSize = size // cache window size + ad.windowSize = size // cache window size return size, nil } diff --git a/pkg/uixt/android_driver_uia2.go b/pkg/uixt/android_driver_uia2.go index ea8070c5..b1ef0a1e 100644 --- a/pkg/uixt/android_driver_uia2.go +++ b/pkg/uixt/android_driver_uia2.go @@ -42,6 +42,9 @@ func NewUIA2Driver(device *AndroidDevice) (*UIA2Driver, error) { type UIA2Driver struct { *ADBDriver + + // cache to avoid repeated query + windowSize types.Size } func (ud *UIA2Driver) resetDriver() error { @@ -171,9 +174,9 @@ func (ud *UIA2Driver) BatteryInfo() (batteryInfo types.BatteryInfo, err error) { func (ud *UIA2Driver) WindowSize() (size types.Size, err error) { // register(getHandler, new GetDeviceSize("/wd/hub/session/:sessionId/window/:windowHandle/size")) - if !ud.Session.windowSize.IsNil() { + if !ud.windowSize.IsNil() { // use cached window size - return ud.Session.windowSize, nil + return ud.windowSize, nil } var rawResp DriverRawResponse @@ -196,7 +199,7 @@ func (ud *UIA2Driver) WindowSize() (size types.Size, err error) { size.Width, size.Height = size.Height, size.Width } - ud.Session.windowSize = size // cache window size + ud.windowSize = size // cache window size return size, nil } diff --git a/pkg/uixt/driver_ext/shoots_ios_driver.go b/pkg/uixt/driver_ext/shoots_ios_driver.go index abd5c6c7..30b879b6 100644 --- a/pkg/uixt/driver_ext/shoots_ios_driver.go +++ b/pkg/uixt/driver_ext/shoots_ios_driver.go @@ -54,7 +54,6 @@ func NewShootsIOSDriver(device *uixt.IOSDevice) (driver *ShootsIOSDriver, err er driver = &ShootsIOSDriver{ WDADriver: wdaDriver.(*uixt.WDADriver), } - driver.device = device driver.bightInsightPrefix = fmt.Sprintf("http://%s:%d", host, localShootsPort) driver.serverPrefix = fmt.Sprintf("http://%s:%d", host, localServerPort) driver.timeout = timeout @@ -68,7 +67,6 @@ type ShootsIOSDriver struct { bightInsightPrefix string serverPrefix string timeout time.Duration - device *uixt.IOSDevice } func (s *ShootsIOSDriver) Source(srcOpt ...option.SourceOption) (string, error) { diff --git a/pkg/uixt/driver_session.go b/pkg/uixt/driver_session.go index fc0f908e..8990016d 100644 --- a/pkg/uixt/driver_session.go +++ b/pkg/uixt/driver_session.go @@ -20,7 +20,6 @@ import ( "github.com/rs/zerolog/log" "github.com/httprunner/httprunner/v5/internal/json" - "github.com/httprunner/httprunner/v5/pkg/uixt/types" ) type Session struct { @@ -28,10 +27,6 @@ type Session struct { baseURL *url.URL client *http.Client - // cache to avoid repeated query - scale float64 - windowSize types.Size - // cache uia2/wda request and response requests []*DriverRequests // cache screenshot ocr results @@ -151,8 +146,8 @@ func (wd *Session) Request(method string, rawURL string, rawBody []byte) (rawRes ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() - var req *http.Request - if req, err = http.NewRequestWithContext(ctx, method, rawURL, bytes.NewBuffer(rawBody)); err != nil { + req, err := http.NewRequestWithContext(ctx, method, rawURL, bytes.NewBuffer(rawBody)) + if err != nil { return nil, err } req.Header.Set("Content-Type", "application/json;charset=UTF-8") diff --git a/pkg/uixt/ios_device.go b/pkg/uixt/ios_device.go index 0ec17204..daf463e3 100644 --- a/pkg/uixt/ios_device.go +++ b/pkg/uixt/ios_device.go @@ -524,10 +524,6 @@ func (dev *IOSDevice) NewHTTPDriver(capabilities option.Capabilities) (driver ID } wd.mjpegClient = NewHTTPClientWithConnection(wd.mjpegHTTPConn, 30*time.Second) wd.mjpegUrl = fmt.Sprintf("%s:%d", host, localMjpegPort) - // init WDA scale - if wd.Session.scale, err = wd.Scale(); err != nil { - return nil, err - } return wd, nil } diff --git a/pkg/uixt/ios_driver_wda.go b/pkg/uixt/ios_driver_wda.go index efa6d9ca..534fbb6c 100644 --- a/pkg/uixt/ios_driver_wda.go +++ b/pkg/uixt/ios_driver_wda.go @@ -36,6 +36,13 @@ func NewWDADriver(device *IOSDevice) (*WDADriver, error) { Session: &Session{}, } driver.InitSession(nil) + + // init WDA scale + var err error + if driver.scale, err = driver.Scale(); err != nil { + return nil, err + } + return driver, nil } @@ -43,6 +50,10 @@ type WDADriver struct { Device *IOSDevice Session *Session + // cache to avoid repeated query + windowSize types.Size + scale float64 + mjpegHTTPConn net.Conn // via HTTP mjpegClient *http.Client mjpegUrl string @@ -229,9 +240,9 @@ func (wd *WDADriver) BatteryInfo() (batteryInfo types.BatteryInfo, err error) { func (wd *WDADriver) WindowSize() (size types.Size, err error) { // [[FBRoute GET:@"/window/size"] respondWithTarget:self action:@selector(handleGetWindowSize:)] - if !wd.Session.windowSize.IsNil() { + if !wd.windowSize.IsNil() { // use cached window size - return wd.Session.windowSize, nil + return wd.windowSize, nil } var rawResp DriverRawResponse @@ -250,13 +261,13 @@ func (wd *WDADriver) WindowSize() (size types.Size, err error) { size.Height = size.Height * int(scale) size.Width = size.Width * int(scale) - wd.Session.windowSize = size // cache window size - return wd.Session.windowSize, nil + wd.windowSize = size // cache window size + return wd.windowSize, nil } func (wd *WDADriver) Scale() (float64, error) { - if !builtin.IsZeroFloat64(wd.Session.scale) { - return wd.Session.scale, nil + if !builtin.IsZeroFloat64(wd.scale) { + return wd.scale, nil } screen, err := wd.Screen() if err != nil { @@ -309,7 +320,7 @@ func (wd *WDADriver) ScreenShot(opts ...option.ActionOption) (raw *bytes.Buffer, } func (wd *WDADriver) toScale(x float64) float64 { - return x / wd.Session.scale + return x / wd.scale } func (wd *WDADriver) ActiveAppInfo() (info types.AppInfo, err error) {