Browse Source

1. 修改OSS配置
2. 处理无法截屏抛出WebDriverException的情况,应该继续执行,而不是抛出异常终止遍历

LiHaoyu 5 years ago
parent
commit
a682d2c119

+ 30 - 25
src/main/java/net/mooctest/www/android_auto_test/Obversers/ScreenShotThread.java

@@ -46,35 +46,40 @@ public class ScreenShotThread extends Thread {
     }
     private void takeScreenShot(AppiumDriver driver,String udid) throws NoSuchSessionException{
         while(!isEnd){
-            File screenShotFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
             try {
-                String path = AddressUtil.getScreenShotFilePath(traceId, udid, DeviceUtil.getDeviceTimeStamp(udid));
-                FileUtils.copyFile(screenShotFile, new File(path));
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
-            FileReader fr;
-            try{
-                fr = new FileReader(screenShotFile);
-                if(fr.read() == -1){
-                    screenShotFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
-                    try {
-                        String path = AddressUtil.getScreenShotFilePath(traceId, udid, DeviceUtil.getDeviceTimeStamp(udid));
-                        FileUtils.copyFile(screenShotFile, new File(path));
-                    } catch (IOException e) {
-                        e.printStackTrace();
-                    }
+                File screenShotFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
+                try {
+                    String path = AddressUtil.getScreenShotFilePath(traceId, udid, DeviceUtil.getDeviceTimeStamp(udid));
+                    FileUtils.copyFile(screenShotFile, new File(path));
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+                FileReader fr;
+                try{
+                    fr = new FileReader(screenShotFile);
                     if(fr.read() == -1){
-                        screenShotFile.delete();
+                        screenShotFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
+                        try {
+                            String path = AddressUtil.getScreenShotFilePath(traceId, udid, DeviceUtil.getDeviceTimeStamp(udid));
+                            FileUtils.copyFile(screenShotFile, new File(path));
+                        } catch (IOException e) {
+                            e.printStackTrace();
+                        }
+                        if(fr.read() == -1){
+                            screenShotFile.delete();
+                        }
                     }
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            } catch (WebDriverException e){
+                PrintUtil.print("Cannot take screenshot", TAG, udid);
+            } finally {
+                try {
+                    Thread.sleep(2000);
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
                 }
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-            try {
-                Thread.sleep(2000);
-            } catch (InterruptedException e) {
-                e.printStackTrace();
             }
         }
     }

+ 3 - 0
src/main/java/net/mooctest/www/android_auto_test/Scripts/DefaultScript.java

@@ -694,6 +694,9 @@ public class DefaultScript extends AbstractBaseScript {
                 PrintUtil.print("Screenshot error ", TAG, udid, myTestLogWriter, PrintUtil.ANSI_RED);
                 PrintUtil.printException(TAG, udid, e);
                 e.printStackTrace();
+            } catch (WebDriverException e){
+                PrintUtil.print(String.format("Cannot take screenshot on this activity, %s.", driver.currentActivity()), TAG, udid, myTestLogWriter, PrintUtil.ANSI_RED);
+                return;
             } finally {
                 count++;
             }

+ 4 - 1
src/main/java/net/mooctest/www/android_auto_test/common/constant/enums/TraceStatus.java

@@ -32,7 +32,10 @@ public enum TraceStatus {
     /**
      * APK包解析失败
      */
-    BAGGING_FAILED(5, "APK解包失败");
+    BAGGING_FAILED(5, "APK解包失败"),
+
+
+    FAILED(6, "失败");
 
     private int code;
     private String description;

+ 1 - 0
src/main/java/net/mooctest/www/android_auto_test/services/Impl/AutoTestServiceImpl.java

@@ -90,6 +90,7 @@ public class AutoTestServiceImpl implements AutoTestService {
             // 选择设备,后期可以修改为如果前端指定了设备or条件,则根据指定的来;目前是选择所有在线的
             List<Device> selectedDevices = deviceService.selectDeviceByApp(apkInfo, deviceList);
             if (selectedDevices == null || selectedDevices.size() == 0){
+                traceService.updateTraceStatue(traceId, TraceStatus.FAILED);
                 throw new NoFreeDeviceException("没有空闲设备");
             }
             traceService.setTraceDevices(traceId, selectedDevices);

+ 2 - 2
src/main/resources/application.yaml

@@ -19,8 +19,8 @@ server:
     port: 15926
 
 oss:
-    accessKeyId: IvS323TIcWUT57MG
+    accessKeyId: LTAI4FwTqQ2grekcxanKHnBL
     endPoint: http://oss-cn-shanghai.aliyuncs.com
-    accessKeySecret: dYml7rvT8stQkoSjMYlfRTxNj9dEsI
+    accessKeySecret: 90nz7r8aImh2NhcNh0HAg8xiOJtn5V
     bucketName: mooctest-enterprise-site