Kaynağa Gözat

添加GroovyExecutor和测试类,以执行自定义脚本

LiHaoyu 5 yıl önce
ebeveyn
işleme
cf8b27c163

+ 0 - 8
scripts/Main.groovy

@@ -1,8 +0,0 @@
-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();
-    }
-}

+ 0 - 8
scripts/Main.java

@@ -1,8 +0,0 @@
-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();
-    }
-}

+ 12 - 11
src/main/java/net/mooctest/www/android_auto_test/common/FuckingTest.java

@@ -1,31 +1,32 @@
 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 java.util.HashMap;
 
 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.groovy.GroovyExecutor;
 import org.openqa.selenium.remote.CapabilityType;
 import org.openqa.selenium.remote.DesiredCapabilities;
 
-import javax.tools.JavaCompiler;
-import javax.tools.ToolProvider;
-
 public class FuckingTest {
     public static void main(String args[]){
-        Inner i = new Inner();
-        try {
-            i.test2();
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
+        HashMap<String, Object> params = new HashMap<>(4);
+        params.put("a", 1);
+        params.put("b", 2);
+        GroovyExecutor.executeScript("add", params);
+//        Inner i = new Inner();
+//        try {
+//            i.test2();
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
     }
 
     static class Inner{

+ 45 - 0
src/main/java/net/mooctest/www/android_auto_test/groovy/GroovyExecutor.java

@@ -0,0 +1,45 @@
+package net.mooctest.www.android_auto_test.groovy;
+
+import groovy.lang.Binding;
+import groovy.lang.GroovyObject;
+import groovy.lang.GroovyShell;
+import groovy.util.GroovyScriptEngine;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Iterator;
+
+
+/**
+ * @author henrylee
+ */
+public class GroovyExecutor {
+    public static void executeMethod(String scriptName, String methodName, Object[] objects){
+        try {
+            GroovyScriptEngine scriptEngine = new GroovyScriptEngine("");
+            Class c = scriptEngine.loadScriptByName("scripts/" + scriptName);
+            //实例化 GroovyDemo 类
+            GroovyObject groovyObj = (GroovyObject) c.newInstance();
+            //调用 groovyDemo 成员方法
+            groovyObj.invokeMethod(methodName, objects);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
+    public static void executeScript(String scriptName, HashMap<String, Object> params){
+        Binding binding = new Binding();
+        for (String key : params.keySet()) {
+            Object value = params.get(key);
+            binding.setVariable(key, value);
+        }
+        try {
+            GroovyScriptEngine engine = new GroovyScriptEngine("");
+            Object result = engine.run("scripts/" + scriptName + ".groovy", binding);
+            System.out.println(result);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}