mirror of
https://github.com/httprunner/httprunner.git
synced 2026-09-05 07:26:55 +08:00
feat: add PushFile for ADBDriver
This commit is contained in:
@@ -1 +1 @@
|
|||||||
v5.0.0-beta-2503271948
|
v5.0.0-beta-2503271956
|
||||||
|
|||||||
+78
-72
@@ -944,78 +944,8 @@ func (ad *ADBDriver) OpenUrl(url string) (err error) {
|
|||||||
|
|
||||||
func (ad *ADBDriver) PushImage(localPath string) error {
|
func (ad *ADBDriver) PushImage(localPath string) error {
|
||||||
log.Info().Str("localPath", localPath).Msg("ADBDriver.PushImage")
|
log.Info().Str("localPath", localPath).Msg("ADBDriver.PushImage")
|
||||||
remotePath := path.Join("/sdcard/DCIM/Camera/", path.Base(localPath))
|
remoteDir := "/sdcard/DCIM/Camera/"
|
||||||
if err := ad.Device.PushFile(localPath, remotePath); err != nil {
|
return ad.PushFile(localPath, remoteDir)
|
||||||
return err
|
|
||||||
}
|
|
||||||
// refresh
|
|
||||||
_, _ = ad.Device.RunShellCommand("am", "broadcast",
|
|
||||||
"-a", "android.intent.action.MEDIA_SCANNER_SCAN_FILE",
|
|
||||||
"-d", fmt.Sprintf("file://%s", remotePath))
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ad *ADBDriver) ClearImages() error {
|
|
||||||
log.Info().Msg("ADBDriver.ClearImages")
|
|
||||||
_, _ = ad.Device.RunShellCommand("rm", "-rf", "/sdcard/DCIM/Camera/*")
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ad *ADBDriver) PullFiles(localDir string, remoteDirs ...string) error {
|
|
||||||
log.Info().Str("localDir", localDir).Strs("remoteDirs", remoteDirs).Msg("ADBDriver.PullFiles")
|
|
||||||
|
|
||||||
// create local directory if not exists
|
|
||||||
if err := os.MkdirAll(localDir, 0o755); err != nil {
|
|
||||||
return fmt.Errorf("failed to create local directory: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, remoteDir := range remoteDirs {
|
|
||||||
files, err := ad.Device.List(remoteDir)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("failed to list directory %s: %w", remoteDir, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, file := range files {
|
|
||||||
remotePath := path.Join(remoteDir, file.Name)
|
|
||||||
localPath := path.Join(localDir, file.Name)
|
|
||||||
|
|
||||||
// check if file already exists
|
|
||||||
if _, err := os.Stat(localPath); err == nil {
|
|
||||||
log.Debug().Str("localPath", localPath).Msg("file already exists, skipping")
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
// create local file
|
|
||||||
f, err := os.Create(localPath)
|
|
||||||
if err != nil {
|
|
||||||
log.Error().Err(err).Str("localPath", localPath).Msg("failed to create local file")
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
defer f.Close()
|
|
||||||
|
|
||||||
// pull image file
|
|
||||||
if err := ad.Device.Pull(remotePath, f); err != nil {
|
|
||||||
log.Error().Err(err).
|
|
||||||
Str("remotePath", remotePath).
|
|
||||||
Str("localPath", localPath).
|
|
||||||
Msg("failed to pull file")
|
|
||||||
continue // continue with next file
|
|
||||||
}
|
|
||||||
log.Info().
|
|
||||||
Str("remotePath", remotePath).
|
|
||||||
Str("localPath", localPath).
|
|
||||||
Msg("file pulled successfully")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ad *ADBDriver) ClearFiles(paths ...string) error {
|
|
||||||
log.Info().Strs("paths", paths).Msg("ADBDriver.ClearFiles")
|
|
||||||
for _, path := range paths {
|
|
||||||
_, _ = ad.Device.RunShellCommand("rm", "-rf", path)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// PullImages pulls all images from device's DCIM/Camera directory to local directory
|
// PullImages pulls all images from device's DCIM/Camera directory to local directory
|
||||||
@@ -1087,6 +1017,82 @@ func isImageFile(ext string) bool {
|
|||||||
return imageExts[ext]
|
return imageExts[ext]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (ad *ADBDriver) ClearImages() error {
|
||||||
|
log.Info().Msg("ADBDriver.ClearImages")
|
||||||
|
_, _ = ad.Device.RunShellCommand("rm", "-rf", "/sdcard/DCIM/Camera/*")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ad *ADBDriver) PushFile(localPath string, remoteDir string) error {
|
||||||
|
log.Info().Str("localPath", localPath).Str("remoteDir", remoteDir).Msg("ADBDriver.PushFile")
|
||||||
|
remotePath := path.Join(remoteDir, path.Base(localPath))
|
||||||
|
if err := ad.Device.PushFile(localPath, remotePath); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
// refresh
|
||||||
|
_, _ = ad.Device.RunShellCommand("am", "broadcast",
|
||||||
|
"-a", "android.intent.action.MEDIA_SCANNER_SCAN_FILE",
|
||||||
|
"-d", fmt.Sprintf("file://%s", remotePath))
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ad *ADBDriver) PullFiles(localDir string, remoteDirs ...string) error {
|
||||||
|
log.Info().Str("localDir", localDir).Strs("remoteDirs", remoteDirs).Msg("ADBDriver.PullFiles")
|
||||||
|
|
||||||
|
// create local directory if not exists
|
||||||
|
if err := os.MkdirAll(localDir, 0o755); err != nil {
|
||||||
|
return fmt.Errorf("failed to create local directory: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, remoteDir := range remoteDirs {
|
||||||
|
files, err := ad.Device.List(remoteDir)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to list directory %s: %w", remoteDir, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, file := range files {
|
||||||
|
remotePath := path.Join(remoteDir, file.Name)
|
||||||
|
localPath := path.Join(localDir, file.Name)
|
||||||
|
|
||||||
|
// check if file already exists
|
||||||
|
if _, err := os.Stat(localPath); err == nil {
|
||||||
|
log.Debug().Str("localPath", localPath).Msg("file already exists, skipping")
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// create local file
|
||||||
|
f, err := os.Create(localPath)
|
||||||
|
if err != nil {
|
||||||
|
log.Error().Err(err).Str("localPath", localPath).Msg("failed to create local file")
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
defer f.Close()
|
||||||
|
|
||||||
|
// pull image file
|
||||||
|
if err := ad.Device.Pull(remotePath, f); err != nil {
|
||||||
|
log.Error().Err(err).
|
||||||
|
Str("remotePath", remotePath).
|
||||||
|
Str("localPath", localPath).
|
||||||
|
Msg("failed to pull file")
|
||||||
|
continue // continue with next file
|
||||||
|
}
|
||||||
|
log.Info().
|
||||||
|
Str("remotePath", remotePath).
|
||||||
|
Str("localPath", localPath).
|
||||||
|
Msg("file pulled successfully")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ad *ADBDriver) ClearFiles(paths ...string) error {
|
||||||
|
log.Info().Strs("paths", paths).Msg("ADBDriver.ClearFiles")
|
||||||
|
for _, path := range paths {
|
||||||
|
_, _ = ad.Device.RunShellCommand("rm", "-rf", path)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
type ExportPoint struct {
|
type ExportPoint struct {
|
||||||
Start int `json:"start" yaml:"start"`
|
Start int `json:"start" yaml:"start"`
|
||||||
End int `json:"end" yaml:"end"`
|
End int `json:"end" yaml:"end"`
|
||||||
|
|||||||
+12
-8
@@ -444,10 +444,22 @@ func (wd *BrowserDriver) AppClear(packageName string) error {
|
|||||||
return errors.New("not support")
|
return errors.New("not support")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (wd *BrowserDriver) PushImage(localPath string) error {
|
||||||
|
return errors.New("not support")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (wd *BrowserDriver) PullImages(localDir string) error {
|
||||||
|
return errors.New("not support")
|
||||||
|
}
|
||||||
|
|
||||||
func (wd *BrowserDriver) ClearImages() error {
|
func (wd *BrowserDriver) ClearImages() error {
|
||||||
return errors.New("not support")
|
return errors.New("not support")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (wd *BrowserDriver) PushFile(localPath string, remoteDir string) error {
|
||||||
|
return errors.New("not support")
|
||||||
|
}
|
||||||
|
|
||||||
func (wd *BrowserDriver) PullFiles(localDir string, remoteDirs ...string) error {
|
func (wd *BrowserDriver) PullFiles(localDir string, remoteDirs ...string) error {
|
||||||
return errors.New("not support")
|
return errors.New("not support")
|
||||||
}
|
}
|
||||||
@@ -456,14 +468,6 @@ func (wd *BrowserDriver) ClearFiles(paths ...string) error {
|
|||||||
return errors.New("not support")
|
return errors.New("not support")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (wd *BrowserDriver) PushImage(localPath string) error {
|
|
||||||
return errors.New("not support")
|
|
||||||
}
|
|
||||||
|
|
||||||
func (wd *BrowserDriver) PullImages(localDir string) error {
|
|
||||||
return errors.New("not support")
|
|
||||||
}
|
|
||||||
|
|
||||||
func (wd *BrowserDriver) Orientation() (orientation types.Orientation, err error) {
|
func (wd *BrowserDriver) Orientation() (orientation types.Orientation, err error) {
|
||||||
log.Warn().Msg("Orientation not implemented in ADBDriver")
|
log.Warn().Msg("Orientation not implemented in ADBDriver")
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -72,6 +72,7 @@ type IDriver interface {
|
|||||||
ClearImages() error
|
ClearImages() error
|
||||||
|
|
||||||
// files related
|
// files related
|
||||||
|
PushFile(localPath string, remoteDir string) error
|
||||||
PullFiles(localDir string, remoteDirs ...string) error
|
PullFiles(localDir string, remoteDirs ...string) error
|
||||||
ClearFiles(paths ...string) error
|
ClearFiles(paths ...string) error
|
||||||
|
|
||||||
|
|||||||
@@ -298,6 +298,11 @@ func (hd *HDCDriver) ClearImages() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (hd *HDCDriver) PushFile(localPath string, remoteDir string) error {
|
||||||
|
log.Warn().Msg("PushFile not implemented in HDCDriver")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (hd *HDCDriver) PullFiles(localDir string, remoteDirs ...string) error {
|
func (hd *HDCDriver) PullFiles(localDir string, remoteDirs ...string) error {
|
||||||
log.Warn().Msg("PullFiles not implemented in HDCDriver")
|
log.Warn().Msg("PullFiles not implemented in HDCDriver")
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -1002,6 +1002,11 @@ func (wd *WDADriver) ClearImages() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (wd *WDADriver) PushFile(localPath string, remoteDir string) error {
|
||||||
|
log.Warn().Msg("PushFile not implemented in WDADriver")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (wd *WDADriver) PullFiles(localDir string, remoteDirs ...string) error {
|
func (wd *WDADriver) PullFiles(localDir string, remoteDirs ...string) error {
|
||||||
log.Warn().Msg("PullFiles not implemented in WDADriver")
|
log.Warn().Msg("PullFiles not implemented in WDADriver")
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
Reference in New Issue
Block a user