From 79149350af8d6208b8edbfeaba846897133e5908 Mon Sep 17 00:00:00 2001 From: suweicheng <2811574534@qq.com> Date: Thu, 25 Oct 2018 18:32:05 +0800 Subject: [PATCH] 开发梳理; --- src/main/java/com/essa/framework/BrowserEngine.java | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------ src/main/java/com/essa/framework/BrowserEnum.java | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/essa/framework/ConfigProperties.java | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/essa/framework/EnvEnum.java | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/essa/framework/Logger.java | 13 +++++++------ src/main/java/com/essa/framework/SuitesEnum.java | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/resources/conf/config_dit.properties | 7 +++++++ src/main/resources/conf/config_hotfix.properties | 7 +++++++ src/main/resources/conf/config_sit.properties | 7 +++++++ src/main/resources/conf/config_uat.properties | 16 ++++++++++++++++ 10 files changed, 480 insertions(+), 66 deletions(-) create mode 100644 src/main/java/com/essa/framework/BrowserEnum.java create mode 100644 src/main/java/com/essa/framework/ConfigProperties.java create mode 100644 src/main/java/com/essa/framework/EnvEnum.java create mode 100644 src/main/java/com/essa/framework/SuitesEnum.java create mode 100644 src/main/resources/conf/config_dit.properties create mode 100644 src/main/resources/conf/config_hotfix.properties create mode 100644 src/main/resources/conf/config_sit.properties create mode 100644 src/main/resources/conf/config_uat.properties diff --git a/src/main/java/com/essa/framework/BrowserEngine.java b/src/main/java/com/essa/framework/BrowserEngine.java index def6c93..8c4c1a4 100644 --- a/src/main/java/com/essa/framework/BrowserEngine.java +++ b/src/main/java/com/essa/framework/BrowserEngine.java @@ -7,47 +7,20 @@ import org.openqa.selenium.ie.InternetExplorerDriver; import org.openqa.selenium.remote.CapabilityType; import org.openqa.selenium.remote.DesiredCapabilities; -import java.io.FileInputStream; import java.io.IOException; -import java.io.InputStream; -import java.util.Properties; import java.util.concurrent.TimeUnit; public class BrowserEngine { - private static String browserName; - private String serverURL; - private String buyerURL; - private static WebDriver driver; - private static String env1; - - public void initConfigData() throws IOException{ - Properties p = new Properties(); - // 加载配置文件 -// System.load("./config.properties"); -// InputStream a = ClassLoader.getSystemResourceAsStream("config.properties"); -// System.out.println("browserName + " + System.getProperty("browserName")); - InputStream ips = new FileInputStream(".\\src\\main\\resources\\config.properties"); - p.load(ips); -// Logger.Output(LogType.LogTypeName.INFO, "开始从配置文件中选择浏览器"); - browserName=p.getProperty("browserName");//使用jframe要注释 - Logger.Output(LogType.LogTypeName.INFO, "所选择的浏览器类型为: "+ browserName); - if (env1=="DIT") { - serverURL = p.getProperty("DIT"); - buyerURL = p.getProperty("BDIT"); - }else if (env1 =="HOTFIX") { - serverURL = p.getProperty("HOTFIX"); - buyerURL = p.getProperty("BHOTFIX"); - }else if (env1 == "UAT") { - serverURL = p.getProperty("UAT"); - buyerURL = p.getProperty("BUAT"); - }else { - serverURL = p.getProperty("SIT"); - buyerURL = p.getProperty("BSIT"); - } - Logger.Output(LogType.LogTypeName.INFO, "所测试的环境为:"+ env1); - Model.setEnv(env1);//我也不知道为什么执行完上面的代码后,env会变为sit - ips.close(); + private static BrowserEnum browserEnum; + private WebDriver driver; + private static EnvEnum env1; + + private ConfigProperties configProperties; + + public void initConfigData() throws IOException{ + configProperties = ConfigProperties.getConfig(env1); + Model.setEnv(env1.getCode());//我也不知道为什么执行完上面的代码后,env会变为sit } /** * bpms环境初始化 @@ -55,35 +28,35 @@ public class BrowserEngine { * @param browser */ public static void setInit(String environment,String browser) { - browserName = browser; - env1 = environment; + browserEnum = BrowserEnum.fromCode(browser); + env1 = EnvEnum.fromCode(environment); } /** * bpms获取地址方法 * @return */ - public WebDriver getBrowser(){ - - if(browserName.equalsIgnoreCase("Firefox")){ - System.setProperty("webdriver.gecko.driver", ".\\resources\\geckodriver.exe"); - driver = new FirefoxDriver(); - Logger.Output(LogType.LogTypeName.INFO, "正在启动FireFox浏览器"); + private WebDriver getBrowser(BrowserEnum browser,String url,int waitTime){ + switch(browser) { + case Firefox:{ + driver = new FirefoxDriver(); + break; + } + case Chrome: { + driver = new ChromeDriver(); + break; + } + case IE: { + driver = new InternetExplorerDriver(); + } } - else if(browserName.equals("Chrome")){ - System.setProperty("webdriver.chrome.driver", ".\\src\\main\\resources\\chromedriver.exe"); //图形界面 - driver= new ChromeDriver(); - Logger.Output(LogType.LogTypeName.INFO, "正在启动Chrome浏览器"); - }else if(browserName.equalsIgnoreCase("IE")){ - System.setProperty("webdriver.ie.driver", ".\\src\\main\resources\\IEDriverServer.exe"); - driver= new InternetExplorerDriver(); - Logger.Output(LogType.LogTypeName.INFO, "正在启动IE浏览器"); - } - driver.manage().window().maximize(); + System.setProperty("webdriver.gecko.driver", ".\\src\\main\\resources\\" + browser.getDriver()); + Logger.Output(LogType.LogTypeName.INFO, "正在启动" + browser.getCode() +"浏览器"); + driver.manage().window().maximize(); Logger.Output(LogType.LogTypeName.INFO, "窗口最大化"); - driver.get(serverURL); - Logger.Output(LogType.LogTypeName.INFO, "打开URL: "+ serverURL); - callWait(5); + driver.get(url); + Logger.Output(LogType.LogTypeName.INFO, "打开URL: "+ url); + callWait(waitTime); return driver; } @@ -92,7 +65,7 @@ public class BrowserEngine { * @return */ public WebDriver buyerGetBrowser() { - if (browserName.equals("Chrome")) { + /*if (browserName.equals("Chrome")) { System.setProperty("webdriver.chrome.driver", ".\\resources\\chromedriver.exe"); //图形界面 driver= new ChromeDriver(); Logger.Output(LogType.LogTypeName.INFO, "正在启动Chrome浏览器"); @@ -105,8 +78,33 @@ public class BrowserEngine { Logger.Output(LogType.LogTypeName.INFO, "窗口最大化"); driver.get(buyerURL); Logger.Output(LogType.LogTypeName.INFO, "打开URL: "+ buyerURL); - callWait(5); - return driver; + callWait(5); */ + return getBrowser(browserEnum,configProperties.getBuyerURL(),5); +// return driver; + } + + public WebDriver getBrowser() { + /*if(browserName.equalsIgnoreCase("Firefox")){ + System.setProperty("webdriver.gecko.driver", ".\\resources\\geckodriver.exe"); + driver = new FirefoxDriver(); + Logger.Output(LogType.LogTypeName.INFO, "正在启动FireFox浏览器"); + } + else if(browserName.equals("Chrome")){ + System.setProperty("webdriver.chrome.driver", ".\\src\\main\\resources\\chromedriver.exe"); //图形界面 + driver= new ChromeDriver(); + Logger.Output(LogType.LogTypeName.INFO, "正在启动Chrome浏览器"); + }else if(browserName.equalsIgnoreCase("IE")){ + System.setProperty("webdriver.ie.driver", ".\\src\\main\resources\\IEDriverServer.exe"); + driver= new InternetExplorerDriver(); + Logger.Output(LogType.LogTypeName.INFO, "正在启动IE浏览器"); + } + driver.manage().window().maximize(); + Logger.Output(LogType.LogTypeName.INFO, "窗口最大化"); + driver.get(serverURL); + Logger.Output(LogType.LogTypeName.INFO, "打开URL: "+ serverURL); + callWait(5);*/ + return getBrowser(browserEnum,configProperties.getServerURL(),5); +// return driver; } diff --git a/src/main/java/com/essa/framework/BrowserEnum.java b/src/main/java/com/essa/framework/BrowserEnum.java new file mode 100644 index 0000000..ba0c7e3 --- /dev/null +++ b/src/main/java/com/essa/framework/BrowserEnum.java @@ -0,0 +1,95 @@ +package com.essa.framework; +/** + * Created by weicheng on 2018/10/25. + */ + +import java.util.List; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicReference; + +public enum BrowserEnum { + Firefox("Firefox","geckodriver.exe"), + Chrome("Chrome","chromedriver.exe"), + IE("IE","IEDriverServer.exe"); + + /** + * 原子引用(全部) + */ + private static AtomicReference> mapAllRef = new AtomicReference<>(); + + private static AtomicReference> mapPartRef = new AtomicReference<>(); + + /** + * 根据code获取 BrowserEnum + * + * @param code + * @return + */ + public static BrowserEnum fromCode(String code) { + buildConcurrentHashMap(); + return mapAllRef.get().get(code); + } + + /** + * 如果map是空,就会构建Map + */ + private static void buildConcurrentHashMap() { + //如果所有枚举的原子引用是空对象,就创建一个ConcurrentHashMap给原子引用 + mapAllRef.compareAndSet(null, new ConcurrentHashMap<>()); + //获取原子引用的currentHashMap对象 + ConcurrentHashMap concurrentHashAllMap = mapAllRef.get(); + //如果ConcurrentHashMap里面没有一个枚举对象,需要初次化 + if (concurrentHashAllMap.isEmpty()) { + for (BrowserEnum e : BrowserEnum.values()) { + concurrentHashAllMap.put(e.getCode(), e); + } + mapAllRef.set(concurrentHashAllMap); + } + } + + /** + * 枚举代码 + */ + private String code; + + /** + * 枚举描述 + */ + private String driver; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getDriver() { + return driver; + } + + public void setDriver(String driver) { + this.driver = driver; + } + + BrowserEnum(String code, String driver) { + this.code = code; + this.driver = driver; + } + + public static List getAllEnum() { + buildConcurrentHashMap(); + return (List) mapAllRef.get().values(); + } + + /** + * 只返回常用枚举 + * + * @return + */ + public static List getEnumByDefault() { + buildConcurrentHashMap(); + return (List) mapPartRef.get().values(); + } +} diff --git a/src/main/java/com/essa/framework/ConfigProperties.java b/src/main/java/com/essa/framework/ConfigProperties.java new file mode 100644 index 0000000..e515ee2 --- /dev/null +++ b/src/main/java/com/essa/framework/ConfigProperties.java @@ -0,0 +1,70 @@ +package com.essa.framework; + +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; +import java.util.Map; +import java.util.Properties; + +/** + * Created by weicheng on 2018/10/25. + */ +public class ConfigProperties { + + private String browserName; + private String serverURL; + private String buyerURL; + + private ConfigProperties() { + + } + + private static Map configPropertiesMap = new HashMap(); + + static { + EnvEnum[] env = EnvEnum.values(); + for (EnvEnum envEnum : env) { + try { + ConfigProperties configProperties = new ConfigProperties(); + Properties p = new Properties(); + InputStream ips = ClassLoader.getSystemResourceAsStream("conf/config_" + envEnum.getCode() +".properties"); + p.load(ips); + configProperties.setBrowserName(p.getProperty("browserName"));//使用jframe要注释 + configProperties.setBuyerURL(p.getProperty("buyerURL")); + configProperties.setServerURL(p.getProperty("serverURL")); + configPropertiesMap.put(envEnum.getCode(),configProperties); + ips.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + public static ConfigProperties getConfig(EnvEnum envEnum) { + return configPropertiesMap.get(envEnum.getCode()); + } + + public String getBrowserName() { + return browserName; + } + + public void setBrowserName(String browserName) { + this.browserName = browserName; + } + + public String getServerURL() { + return serverURL; + } + + public void setServerURL(String serverURL) { + this.serverURL = serverURL; + } + + public String getBuyerURL() { + return buyerURL; + } + + public void setBuyerURL(String buyerURL) { + this.buyerURL = buyerURL; + } +} diff --git a/src/main/java/com/essa/framework/EnvEnum.java b/src/main/java/com/essa/framework/EnvEnum.java new file mode 100644 index 0000000..bed6b0a --- /dev/null +++ b/src/main/java/com/essa/framework/EnvEnum.java @@ -0,0 +1,96 @@ +package com.essa.framework; +/** + * Created by weicheng on 2018/10/25. + */ + +import java.util.List; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicReference; + +public enum EnvEnum { + DIT("dit","DIT"), + HOTFIX("hotfix","HOTFIX"), + UAT("uat","UAT"), + SIT("sit","SIT"); + + /** + * 原子引用(全部) + */ + private static AtomicReference> mapAllRef = new AtomicReference<>(); + + private static AtomicReference> mapPartRef = new AtomicReference<>(); + + /** + * 根据code获取 EnvEnum + * + * @param code + * @return + */ + public static EnvEnum fromCode(String code) { + buildConcurrentHashMap(); + return mapAllRef.get().get(code); + } + + /** + * 如果map是空,就会构建Map + */ + private static void buildConcurrentHashMap() { + //如果所有枚举的原子引用是空对象,就创建一个ConcurrentHashMap给原子引用 + mapAllRef.compareAndSet(null, new ConcurrentHashMap<>()); + //获取原子引用的currentHashMap对象 + ConcurrentHashMap concurrentHashAllMap = mapAllRef.get(); + //如果ConcurrentHashMap里面没有一个枚举对象,需要初次化 + if (concurrentHashAllMap.isEmpty()) { + for (EnvEnum e : EnvEnum.values()) { + concurrentHashAllMap.put(e.getCode(), e); + } + mapAllRef.set(concurrentHashAllMap); + } + } + + /** + * 枚举代码 + */ + private String code; + + /** + * 枚举描述 + */ + private String desc; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + EnvEnum(String code, String desc) { + this.code = code; + this.desc = desc; + } + + public static List getAllEnum() { + buildConcurrentHashMap(); + return (List) mapAllRef.get().values(); + } + + /** + * 只返回常用枚举 + * + * @return + */ + public static List getEnumByDefault() { + buildConcurrentHashMap(); + return (List) mapPartRef.get().values(); + } +} diff --git a/src/main/java/com/essa/framework/Logger.java b/src/main/java/com/essa/framework/Logger.java index 0ea0352..8985cc7 100644 --- a/src/main/java/com/essa/framework/Logger.java +++ b/src/main/java/com/essa/framework/Logger.java @@ -6,8 +6,6 @@ import java.io.OutputStreamWriter; import java.text.SimpleDateFormat; import java.util.Date; -import com.essa.framework.LogType; - public class Logger { public static String OutputFileName = getDateTimeByFormat(new Date(), "yyyyMMdd"); @@ -27,10 +25,13 @@ public class Logger { // 定义日志文件保存路径和日志文件名称 logFileName = ".\\Log" + "\\" + OutputFileName + ".log"; if (outputStreamWriter == null) { - File logFile = new File(logFileName); - - if (!logFile.exists()) - logFile.createNewFile(); + File logFile = new File(logFileName); + + if(!logFile.getParentFile().exists()){ + logFile.getParentFile().mkdirs(); + } + if (!logFile.exists()) + logFile.createNewFile(); //利用OutputStreamWriter往日志文件写内容,字符编码是unicode outputStreamWriter = new OutputStreamWriter(new FileOutputStream(logFileName), "utf-8"); } diff --git a/src/main/java/com/essa/framework/SuitesEnum.java b/src/main/java/com/essa/framework/SuitesEnum.java new file mode 100644 index 0000000..c56dd8f --- /dev/null +++ b/src/main/java/com/essa/framework/SuitesEnum.java @@ -0,0 +1,117 @@ +package com.essa.framework; +/** + * Created by weicheng on 2018/10/25. + */ + +import java.util.List; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicReference; + +public enum SuitesEnum { + ADD_ORIGINAL_GOODS("ADD_ORIGIN_SKU","addOriginalGoods.xml","新增原厂商品"), + ADD_MARKET_GOODS("ADD_MARKET_GOODS","addMarketGoods.xml","新增市场商品"), + PUBLISH_GROUP_PURCHASE("PUBLISH_GROUP_PURCHASE","publishGroupPurchase.xml","发布团购"), + BUYER_REGISTER("BUYER_REGISTER","buyerRegister.xml","采购商注册"), + ADD_SKU_TO_CART("ADD_SKU_TO_CART","addSkuToCart.xml","添加SKU至购物车"), + ACTIVITY_INQUIRY("ACTIVITY_INQUIRY","activityInquiry.xml","成品询价(活动)"), + PRODUCT_INQUIRY("PRODUCT_INQUIRY","productInquiry.xml","成品询价(正常)"), + ACTIVITY_SEND_PO("ACTIVITY_SEND_PO","activitySendPO.xml","生成PO(活动)"), + SEND_PO("SEND_PO","sendPO.xml","生成PO(正常)"), + PO_INQUIRY("PO_INQUIRY","POInquiry.xml","PO询价") + ; + + /** + * 原子引用(全部) + */ + private static AtomicReference> mapAllRef = new AtomicReference<>(); + + private static AtomicReference> mapPartRef = new AtomicReference<>(); + + /** + * 根据code获取 SuitesEnum + * + * @param code + * @return + */ + public static SuitesEnum fromCode(String code) { + buildConcurrentHashMap(); + return mapAllRef.get().get(code); + } + + /** + * 如果map是空,就会构建Map + */ + private static void buildConcurrentHashMap() { + //如果所有枚举的原子引用是空对象,就创建一个ConcurrentHashMap给原子引用 + mapAllRef.compareAndSet(null, new ConcurrentHashMap<>()); + //获取原子引用的currentHashMap对象 + ConcurrentHashMap concurrentHashAllMap = mapAllRef.get(); + //如果ConcurrentHashMap里面没有一个枚举对象,需要初次化 + if (concurrentHashAllMap.isEmpty()) { + for (SuitesEnum e : SuitesEnum.values()) { + concurrentHashAllMap.put(e.getCode(), e); + } + mapAllRef.set(concurrentHashAllMap); + } + } + + /** + * 枚举代码 + */ + private String code; + + /** + * suite 文件名 + */ + private String suiteName; + + /** + * 枚举描述 + */ + private String desc; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getSuiteName() { + return suiteName; + } + + public void setSuiteName(String suiteName) { + this.suiteName = suiteName; + } + + SuitesEnum(String code, String suiteName, String desc) { + this.code = code; + this.suiteName = suiteName; + this.desc = desc; + } + + public static List getAllEnum() { + buildConcurrentHashMap(); + return (List) mapAllRef.get().values(); + } + + /** + * 只返回常用枚举 + * + * @return + */ + public static List getEnumByDefault() { + buildConcurrentHashMap(); + return (List) mapPartRef.get().values(); + } +} diff --git a/src/main/resources/conf/config_dit.properties b/src/main/resources/conf/config_dit.properties new file mode 100644 index 0000000..8986025 --- /dev/null +++ b/src/main/resources/conf/config_dit.properties @@ -0,0 +1,7 @@ +#browserName=FireFox +#browserName=IE +browserName=Chrome + +serverURL=http://bpms.sit.gz.essa +buyerURL=http://en.portalsit.cn + diff --git a/src/main/resources/conf/config_hotfix.properties b/src/main/resources/conf/config_hotfix.properties new file mode 100644 index 0000000..8986025 --- /dev/null +++ b/src/main/resources/conf/config_hotfix.properties @@ -0,0 +1,7 @@ +#browserName=FireFox +#browserName=IE +browserName=Chrome + +serverURL=http://bpms.sit.gz.essa +buyerURL=http://en.portalsit.cn + diff --git a/src/main/resources/conf/config_sit.properties b/src/main/resources/conf/config_sit.properties new file mode 100644 index 0000000..8986025 --- /dev/null +++ b/src/main/resources/conf/config_sit.properties @@ -0,0 +1,7 @@ +#browserName=FireFox +#browserName=IE +browserName=Chrome + +serverURL=http://bpms.sit.gz.essa +buyerURL=http://en.portalsit.cn + diff --git a/src/main/resources/conf/config_uat.properties b/src/main/resources/conf/config_uat.properties new file mode 100644 index 0000000..414e8d8 --- /dev/null +++ b/src/main/resources/conf/config_uat.properties @@ -0,0 +1,16 @@ +#browserName=FireFox +#browserName=IE +browserName=Chrome + +SIT=http://bpms.sit.gz.essa +BSIT=http://en.portalsit.cn + +HOTFIX=http://bpms.hotfix.gz.essa +BHOTFIX=http://en.portalhotfix.cn + +UAT=http://bpms.spstoys.com:7291 +BUAT=http://en.spstoys.com:889 + +DIT=http://bpms.dit.gz.essa +BDIT=http://en.portaldit.cn + -- libgit2 0.21.2