Przeglądaj źródła

添加groovy依赖以及相关测试代码,准备重构

LiHaoyu 5 lat temu
rodzic
commit
1110bb53cb

+ 6 - 0
pom.xml

@@ -20,6 +20,12 @@
 
     <dependencies>
         <dependency>
+            <groupId>org.codehaus.groovy</groupId>
+            <artifactId>groovy</artifactId>
+            <version>2.5.4</version>
+        </dependency>
+
+        <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <scope>test</scope>

+ 8 - 0
scripts/Main.groovy

@@ -0,0 +1,8 @@
+import io.appium.java_client.AppiumDriver;
+
+public class Main {
+    public void test(AppiumDriver driver){
+        System.out.println("execute custom script");
+        driver.findElementByXPath("//android.widget.Button[contains(@text,'始终允许')]").click();
+    }
+}

+ 45 - 41
src/main/java/net/mooctest/www/android_auto_test/common/FuckingTest.java

@@ -3,66 +3,70 @@ package net.mooctest.www.android_auto_test.common;
 import com.sun.tools.javac.Main;
 
 import java.io.File;
+import java.io.IOException;
 import java.lang.reflect.Method;
 import java.net.MalformedURLException;
 import java.net.URL;
 
+import groovy.lang.GroovyClassLoader;
+import groovy.lang.GroovyObject;
 import io.appium.java_client.AppiumDriver;
 import io.appium.java_client.android.AndroidDriver;
-import net.mooctest.www.android_auto_test.common.constant.Consts;
-import net.mooctest.www.android_auto_test.common.exceptions.AppiumDriverInitException;
-import net.mooctest.www.android_auto_test.utils.DeviceUtil;
-import net.mooctest.www.android_auto_test.utils.PrintUtil;
-import org.openqa.selenium.WebDriverException;
 import org.openqa.selenium.remote.CapabilityType;
 import org.openqa.selenium.remote.DesiredCapabilities;
-import org.openqa.selenium.remote.UnreachableBrowserException;
 
 import javax.tools.JavaCompiler;
 import javax.tools.ToolProvider;
 
 public class FuckingTest {
     public static void main(String args[]){
-        JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
-        int status = javac.run(null, null, null, "-d", "target/classes","scripts/Main.java");
-        if(status!=0){
-            System.out.println("没有编译成功!");
-        }
-
-        AppiumDriver d = initDriver();
-
+        Inner i = new Inner();
         try {
-            Class thisClass = Class.forName("ttt.Main");
-            Object iClass = thisClass.newInstance();
-            Method thisMethod = thisClass.getDeclaredMethod("test", AppiumDriver.class);
-            thisMethod.setAccessible(true);
-            thisMethod.invoke(iClass, d);
-        }
-        catch (Exception e) {
+            i.test2();
+        } catch (Exception e) {
             e.printStackTrace();
         }
     }
 
-    public static AppiumDriver initDriver(){
-        File app = new File("tasks/30000/趣头条_3.9.59.000.1231.1404.apk");
-        DesiredCapabilities capabilities = new DesiredCapabilities();
-        capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
-        capabilities.setCapability("platformName", "Android");
-        capabilities.setCapability("deviceName", "Android Emulator");
-        capabilities.setCapability("platformVersion", "4.1.2");
-        capabilities.setCapability("app", app.getAbsolutePath());
-        capabilities.setCapability("appPackage", "com.jifen.qukan");
-        capabilities.setCapability("appActivity", "com.jifen.qkbase.main.MainActivity");
-        capabilities.setCapability("udid","66J5T19401004951");
-        capabilities.setCapability("unicodeKeyboard","true");
-        capabilities.setCapability("resetKeyboard","true");
-        capabilities.setCapability("noSign", "true");
-        AppiumDriver d = null;
-        try {
-            d = new AndroidDriver(new URL("http://127.0.0.1:" + 8888 + "/wd/hub"), capabilities);
-        } catch (MalformedURLException e) {
-            e.printStackTrace();
+    static class Inner{
+        private void test2() throws IOException, IllegalAccessException, InstantiationException {
+            AppiumDriver d = initDriver();
+            //获取 groovy 类的反射对象
+            ClassLoader parent = getClass().getClassLoader();
+            GroovyClassLoader loader = new GroovyClassLoader(parent);
+            try {
+                Class groovyClass = loader.parseClass(new File("scripts/Main.java"));
+                //实例化 GroovyDemo 类
+                GroovyObject groovyObj = (GroovyObject) groovyClass.newInstance();
+                //调用 groovyDemo 成员方法
+                System.out.println( groovyObj.invokeMethod("test",d));
+            }catch (Exception e){
+                System.out.println(e.getClass());
+            }
+            System.out.println("end");
+        }
+
+        public static AppiumDriver initDriver(){
+            File app = new File("tasks/30001/趣头条_3.9.59.000.1231.1404.apk");
+            DesiredCapabilities capabilities = new DesiredCapabilities();
+            capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
+            capabilities.setCapability("platformName", "Android");
+            capabilities.setCapability("deviceName", "Android Emulator");
+            capabilities.setCapability("platformVersion", "4.1.2");
+            capabilities.setCapability("app", app.getAbsolutePath());
+            capabilities.setCapability("appPackage", "com.jifen.qukan");
+            capabilities.setCapability("appActivity", "com.jifen.qkbase.main.MainActivity");
+            capabilities.setCapability("udid","CLB0218724002507");
+            capabilities.setCapability("unicodeKeyboard","true");
+            capabilities.setCapability("resetKeyboard","true");
+            capabilities.setCapability("noSign", "true");
+            AppiumDriver d = null;
+            try {
+                d = new AndroidDriver(new URL("http://127.0.0.1:" + 8888 + "/wd/hub"), capabilities);
+            } catch (MalformedURLException e) {
+                e.printStackTrace();
+            }
+            return d;
         }
-        return d;
     }
 }