fix: init wda driver

This commit is contained in:
lilong.129
2025-02-17 17:50:41 +08:00
parent 29c0e1cbef
commit 3ae314d0ba
5 changed files with 36 additions and 25 deletions
+1 -1
View File
@@ -1 +1 @@
v5.0.0+2502171711 v5.0.0+2502171750
-9
View File
@@ -334,15 +334,6 @@ func (r DriverRawResponse) ValueConvertToBool() (b bool, err error) {
return return
} }
func (r DriverRawResponse) ValueConvertToSessionInfo() (sessionInfo DriverSession, err error) {
reply := new(struct{ Value struct{ DriverSession } })
if err = json.Unmarshal(r, reply); err != nil {
return DriverSession{}, err
}
sessionInfo = reply.Value.DriverSession
return
}
func (r DriverRawResponse) ValueConvertToJsonRawMessage() (raw builtinJSON.RawMessage, err error) { func (r DriverRawResponse) ValueConvertToJsonRawMessage() (raw builtinJSON.RawMessage, err error) {
reply := new(struct{ Value builtinJSON.RawMessage }) reply := new(struct{ Value builtinJSON.RawMessage })
if err = json.Unmarshal(r, reply); err != nil { if err = json.Unmarshal(r, reply); err != nil {
+11 -13
View File
@@ -36,16 +36,8 @@ func NewWDADriver(device *IOSDevice) (*WDADriver, error) {
Device: device, Device: device,
Session: NewDriverSession(), Session: NewDriverSession(),
} }
err := driver.InitSession(nil)
if err != nil {
return nil, err
}
// init WDA scale
if driver.scale, err = driver.Scale(); err != nil {
return nil, err
}
var err error
// forward local port to device // forward local port to device
var localPort int var localPort int
localPort, err = strconv.Atoi(os.Getenv("WDA_LOCAL_PORT")) localPort, err = strconv.Atoi(os.Getenv("WDA_LOCAL_PORT"))
@@ -97,6 +89,11 @@ func NewWDADriver(device *IOSDevice) (*WDADriver, error) {
driver.mjpegClient = NewHTTPClientWithConnection(driver.mjpegHTTPConn, 30*time.Second) driver.mjpegClient = NewHTTPClientWithConnection(driver.mjpegHTTPConn, 30*time.Second)
driver.mjpegUrl = fmt.Sprintf("%s:%d", host, localMjpegPort) driver.mjpegUrl = fmt.Sprintf("%s:%d", host, localMjpegPort)
// init WDA scale
if driver.scale, err = driver.Scale(); err != nil {
return nil, err
}
return driver, nil return driver, nil
} }
@@ -129,12 +126,12 @@ func (wd *WDADriver) InitSession(capabilities option.Capabilities) error {
if err != nil { if err != nil {
return err return err
} }
sessionInfo, err := rawResp.ValueConvertToSessionInfo() reply := new(struct{ Value struct{ SessionId string } })
if err != nil { if err = json.Unmarshal(rawResp, reply); err != nil {
return err return err
} }
// update session ID // update session ID
wd.Session.ID = sessionInfo.ID wd.Session.ID = reply.Value.SessionId
return nil return nil
} }
@@ -906,8 +903,9 @@ func (wd *WDADriver) StartCaptureLog(identifier ...string) error {
} }
type wdaResponse struct { type wdaResponse struct {
Value interface{} `json:"value"` Status int `json:"status"`
SessionID string `json:"sessionId"` SessionID string `json:"sessionId"`
Value interface{} `json:"value"`
} }
func (wd *WDADriver) StopCaptureLog() (result interface{}, err error) { func (wd *WDADriver) StopCaptureLog() (result interface{}, err error) {
-2
View File
@@ -28,8 +28,6 @@ func setup(t *testing.T) {
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
capabilities := option.NewCapabilities()
capabilities.WithDefaultAlertAction(option.AlertActionAccept)
driver, err = device.NewDriver() driver, err = device.NewDriver()
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
+24
View File
@@ -2,6 +2,30 @@ package types
import "fmt" import "fmt"
// DeviceStatus example:
//
// {
// "status": 0,
// "sessionId": "7DD3B0F7-958B-45F1-B99D-745B4EEFE178",
// "value": {
// "message": "WebDriverAgent is ready to accept commands",
// "state": "success",
// "os": {
// "testmanagerdVersion": 28,
// "name": "iOS",
// "sdkVersion": "16.0",
// "version": "15.3.1"
// },
// "ios": {
// "ip": "169.254.237.64"
// },
// "ready": true,
// "build": {
// "time": "Jun 21 2024 11:11:37",
// "productBundleIdentifier": "com.facebook.WebDriverAgentRunner"
// }
// }
// }
type DeviceStatus struct { type DeviceStatus struct {
Message string `json:"message"` Message string `json:"message"`
State string `json:"state"` State string `json:"state"`