fix:上位机

1.修改以图找图中截取全屏的逻辑
master
李杰应 2024-08-06 09:53:41 +08:00
parent 1608e29d27
commit bd8673f832
4 changed files with 36 additions and 12 deletions

View File

@ -1915,7 +1915,9 @@ public class IosAutomationHandler extends AbstractAutomationHandler {
HttpUtils.downloadFileToLocal(picDownloadUrl, System.getProperty("user.dir") + "/tempPic", picName); HttpUtils.downloadFileToLocal(picDownloadUrl, System.getProperty("user.dir") + "/tempPic", picName);
File file = new File(System.getProperty("user.dir") + "/tempPic/" + picName); File file = new File(System.getProperty("user.dir") + "/tempPic/" + picName);
String targetBase64 = Base64.encode(file); String targetBase64 = Base64.encode(file);
File sourceFile = ScreenShotUtils.getIOSMobileScreenShot(serial);
File sourceFile = deviceHandleHelper.getScreenShotFile(serial);
String sourceBase64 = Base64.encode(sourceFile); String sourceBase64 = Base64.encode(sourceFile);
if (StringUtils.isNotBlank(targetBase64) && StringUtils.isNotBlank(sourceBase64)) { if (StringUtils.isNotBlank(targetBase64) && StringUtils.isNotBlank(sourceBase64)) {
Map<String, BigDecimal> resultPoint = null; Map<String, BigDecimal> resultPoint = null;
@ -1935,7 +1937,7 @@ public class IosAutomationHandler extends AbstractAutomationHandler {
resultPoint = (Map<String, BigDecimal>) bodyMap.get("data"); resultPoint = (Map<String, BigDecimal>) bodyMap.get("data");
} }
} catch (URISyntaxException e) { } catch (URISyntaxException e) {
logger.error("找图像地址有误,:{}", e); logger.error("找图像地址有误", e);
} catch (Exception e) { } catch (Exception e) {
logger.error("请求图像解析服务失败,参数:{},错误:{}", JSON.toJSONString(param), e); logger.error("请求图像解析服务失败,参数:{},错误:{}", JSON.toJSONString(param), e);
} }
@ -1952,7 +1954,7 @@ public class IosAutomationHandler extends AbstractAutomationHandler {
result.setX(clickTrueX); result.setX(clickTrueX);
result.setY(clickTrueY); result.setY(clickTrueY);
} catch (IOException e) { } catch (IOException e) {
logger.error("转换base64图片失败{}", e); logger.error("转换base64图片失败", e);
} }
} else { } else {
logger.warn("步骤【{}】未找到对应的图像", request.getStepToken()); logger.warn("步骤【{}】未找到对应的图像", request.getStepToken());

View File

@ -80,4 +80,6 @@ public abstract class IosDeviceHandleHelper {
public abstract boolean activateApp(String deviceId, String appPackage); public abstract boolean activateApp(String deviceId, String appPackage);
public abstract File getScreenShotFile(String deviceId, Integer startX, Integer startY, Integer cutWidth, Integer cutHeight, Integer screenWidth, Integer screenHeight); public abstract File getScreenShotFile(String deviceId, Integer startX, Integer startY, Integer cutWidth, Integer cutHeight, Integer screenWidth, Integer screenHeight);
public abstract File getScreenShotFile(String deviceId);
} }

View File

@ -206,19 +206,23 @@ public class LinuxAndWindowsIosHandleHelper extends IosDeviceHandleHelper {
*/ */
@Override @Override
public File getScreenShotFile(String deviceId, Integer startX, Integer startY, Integer cutWidth, Integer cutHeight, Integer screenWidth, Integer screenHeight) { public File getScreenShotFile(String deviceId, Integer startX, Integer startY, Integer cutWidth, Integer cutHeight, Integer screenWidth, Integer screenHeight) {
if (cutWidth <= 0 || cutHeight <= 0) {
throw new ExecuteException("截取图片的宽高不满足要求");
}
File snapShotFile = null; File snapShotFile = null;
File cutFile = null; File cutFile = null;
try { try {
snapShotFile = ScreenShotUtils.getIOSMobileScreenShot(deviceId); snapShotFile = ScreenShotUtils.getIOSMobileScreenShot(deviceId);
if (null == snapShotFile) { if (!snapShotFile.exists()) {
logger.debug("设备【{}】未截取到图片",deviceId); logger.debug("设备【{}】未截取到图片",deviceId);
throw new ExecuteException("未截取到图片"); throw new ExecuteException("未截取到图片");
} }
if (null != startX && null != startY) {
if (cutWidth <= 0 || cutHeight <= 0) {
throw new ExecuteException("截取图片的宽高不满足要求");
}
cutFile = cutImageFile(snapShotFile, deviceId, startX, startY, cutWidth, cutHeight, screenWidth, screenHeight); cutFile = cutImageFile(snapShotFile, deviceId, startX, startY, cutWidth, cutHeight, screenWidth, screenHeight);
logger.debug("设备【{}】截取到的图片为:{}", deviceId, cutFile.getAbsolutePath()); logger.debug("设备【{}】截取到的图片为:{}", deviceId, cutFile.getAbsolutePath());
} else {
cutFile = snapShotFile;
}
return cutFile; return cutFile;
} catch (ExecuteException e) { } catch (ExecuteException e) {
logger.error("截图失败", e); logger.error("截图失败", e);
@ -235,4 +239,9 @@ public class LinuxAndWindowsIosHandleHelper extends IosDeviceHandleHelper {
} }
} }
} }
@Override
public File getScreenShotFile(String deviceId) {
return getScreenShotFile(deviceId, null, null, null, null, null, null);
}
} }

View File

@ -81,9 +81,6 @@ public class MacIosHandleHelper extends IosDeviceHandleHelper {
@Override @Override
public File getScreenShotFile(String deviceId, Integer startX, Integer startY, Integer cutWidth, Integer cutHeight, Integer screenWidth, Integer screenHeight) { public File getScreenShotFile(String deviceId, Integer startX, Integer startY, Integer cutWidth, Integer cutHeight, Integer screenWidth, Integer screenHeight) {
if (cutWidth <= 0 || cutHeight <= 0) {
throw new ExecuteException("截取图片的宽高不满足要求");
}
PyMobileDevice.SpecificAppleDeviceInfo specificAppleDeviceInfo = IOSDeviceManager.getInstance().getSpecificAppleDeviceInfo(deviceId); PyMobileDevice.SpecificAppleDeviceInfo specificAppleDeviceInfo = IOSDeviceManager.getInstance().getSpecificAppleDeviceInfo(deviceId);
File file = null; File file = null;
File screenShotFile = null; File screenShotFile = null;
@ -96,6 +93,9 @@ public class MacIosHandleHelper extends IosDeviceHandleHelper {
logger.debug("设备【{}】截图的结果:{}",deviceId,screenShotFile.getAbsolutePath()); logger.debug("设备【{}】截图的结果:{}",deviceId,screenShotFile.getAbsolutePath());
} }
if (null != startX || null != startY) { if (null != startX || null != startY) {
if (cutWidth <= 0 || cutHeight <= 0) {
throw new ExecuteException("截取图片的宽高不满足要求");
}
file = cutImageFile(screenShotFile, deviceId, startX, startY, cutWidth, cutHeight, screenWidth, screenHeight); file = cutImageFile(screenShotFile, deviceId, startX, startY, cutWidth, cutHeight, screenWidth, screenHeight);
logger.debug("截取出来的图像为:{}", file.getAbsolutePath()); logger.debug("截取出来的图像为:{}", file.getAbsolutePath());
} else { } else {
@ -111,4 +111,15 @@ public class MacIosHandleHelper extends IosDeviceHandleHelper {
} }
return file; return file;
} }
/**
*
*
* @param deviceId
* @return
*/
@Override
public File getScreenShotFile(String deviceId) {
return getScreenShotFile(deviceId, null, null, null, null, null, null);
}
} }