From 69f3ad447d6df6feb5df4da10e1159611dd474ba Mon Sep 17 00:00:00 2001 From: "lilong.129" Date: Mon, 2 Sep 2024 13:43:57 +0800 Subject: [PATCH] change: remove MJPEG stream --- hrp/pkg/uixt/ext.go | 77 ++------------------------------------ hrp/pkg/uixt/screenshot.go | 5 --- 2 files changed, 3 insertions(+), 79 deletions(-) diff --git a/hrp/pkg/uixt/ext.go b/hrp/pkg/uixt/ext.go index e6646631..7ec335ce 100644 --- a/hrp/pkg/uixt/ext.go +++ b/hrp/pkg/uixt/ext.go @@ -1,16 +1,8 @@ package uixt import ( - "bytes" _ "image/gif" _ "image/png" - "mime" - "mime/multipart" - "net/http" - "os" - "os/signal" - "strings" - "syscall" "github.com/httprunner/funplugin" "github.com/pkg/errors" @@ -27,10 +19,6 @@ type DriverExt struct { // funplugin plugin funplugin.IPlugin - - frame *bytes.Buffer - doneMjpegStream chan bool - interruptSignal chan os.Signal } func newDriverExt(device Device, driver WebDriver, options ...DriverOption) (dExt *DriverExt, err error) { @@ -41,15 +29,11 @@ func newDriverExt(device Device, driver WebDriver, options ...DriverOption) (dEx driver.GetSession().Clear() dExt = &DriverExt{ - Device: device, - Driver: driver, - plugin: driverOptions.plugin, - interruptSignal: make(chan os.Signal, 1), + Device: device, + Driver: driver, + plugin: driverOptions.plugin, } - signal.Notify(dExt.interruptSignal, syscall.SIGTERM, syscall.SIGINT) - dExt.doneMjpegStream = make(chan bool, 1) - if driverOptions.withImageService { if dExt.ImageService, err = newVEDEMImageService(); err != nil { return nil, err @@ -135,58 +119,3 @@ func (dExt *DriverExt) DoValidation(check, assert, expected string, message ...s Msg("validate UI success") return true } - -func (dExt *DriverExt) ConnectMjpegStream(httpClient *http.Client) (err error) { - if httpClient == nil { - return errors.New(`'httpClient' can't be nil`) - } - - var req *http.Request - if req, err = http.NewRequest(http.MethodGet, "http://*", nil); err != nil { - return err - } - - var resp *http.Response - if resp, err = httpClient.Do(req); err != nil { - return err - } - // defer func() { _ = resp.Body.Close() }() - - var boundary string - if _, param, err := mime.ParseMediaType(resp.Header.Get("Content-Type")); err != nil { - return err - } else { - boundary = strings.Trim(param["boundary"], "-") - } - - mjpegReader := multipart.NewReader(resp.Body, boundary) - - go func() { - for { - select { - case <-dExt.doneMjpegStream: - _ = resp.Body.Close() - return - default: - var part *multipart.Part - if part, err = mjpegReader.NextPart(); err != nil { - dExt.frame = nil - continue - } - - raw := new(bytes.Buffer) - if _, err = raw.ReadFrom(part); err != nil { - dExt.frame = nil - continue - } - dExt.frame = raw - } - } - }() - - return -} - -func (dExt *DriverExt) CloseMjpegStream() { - dExt.doneMjpegStream <- true -} diff --git a/hrp/pkg/uixt/screenshot.go b/hrp/pkg/uixt/screenshot.go index 9b5b7469..58f669e4 100644 --- a/hrp/pkg/uixt/screenshot.go +++ b/hrp/pkg/uixt/screenshot.go @@ -148,11 +148,6 @@ func (dExt *DriverExt) FindUIResult(options ...ActionOption) (point PointF, err // GetScreenShot takes screenshot and saves image file to $CWD/screenshots/ folder func (dExt *DriverExt) GetScreenShot(fileName string) (raw *bytes.Buffer, path string, err error) { - // iOS 优先使用 MJPEG 流进行截图,性能最优 - // 如果 MJPEG 流未开启,则使用 WebDriver 的截图接口 - if dExt.frame != nil { - return dExt.frame, "", nil - } if raw, err = dExt.Driver.Screenshot(); err != nil { log.Error().Err(err).Msg("capture screenshot data failed") return nil, "", err