change: check android device offline

This commit is contained in:
lilong.129
2023-05-30 21:31:51 +08:00
parent 21a2f9fd22
commit b0e7a6609f
3 changed files with 19 additions and 4 deletions

View File

@@ -246,6 +246,9 @@ func (d *Device) ReverseForwardKillAll() error {
func (d *Device) RunShellCommand(cmd string, args ...string) (string, error) {
raw, err := d.RunShellCommandWithBytes(cmd, args...)
if err != nil {
if errors.Is(err, code.AndroidDeviceConnectionError) {
return "", err
}
return "", errors.Wrap(code.AndroidShellExecError, err.Error())
}
return string(raw), nil

View File

@@ -1,15 +1,18 @@
package gadb
import (
"errors"
"fmt"
"io"
"io/ioutil"
"net"
"regexp"
"strconv"
"time"
"github.com/pkg/errors"
"github.com/rs/zerolog/log"
"github.com/httprunner/httprunner/v4/hrp/internal/code"
)
var ErrConnBroken = errors.New("socket connection broken")
@@ -45,6 +48,8 @@ func (t transport) Conn() net.Conn {
return t.sock
}
var regexDeviceOffline = regexp.MustCompile("device .* not found")
func (t transport) VerifyResponse() (err error) {
var status string
if status, err = t.ReadStringN(4); err != nil {
@@ -58,9 +63,15 @@ func (t transport) VerifyResponse() (err error) {
if sError, err = t.UnpackString(); err != nil {
return err
}
err = fmt.Errorf("command failed: %s", sError)
log.Error().Str("status", status).Str("err", sError).Msg("verify adb response failed")
return
if regexDeviceOffline.MatchString(sError) {
// device offline
return errors.Wrap(code.AndroidDeviceConnectionError, sError)
}
log.Warn().Str("status", status).Str("err", sError).
Msg("verify adb response failed")
return errors.New(sError)
}
func (t transport) ReadStringAll() (s string, err error) {

View File

@@ -462,6 +462,7 @@ var popups = [][]string{
{".*定位.*", ".*允许.*"},
{".*拍照.*", "仅.*允许"},
{".*录音.*", "仅.*允许"},
{"管理使用时间", ".*忽略.*"},
}
func (dExt *DriverExt) autoPopupHandler(ocrResult *OcrResult) error {