zero 1 年之前
父節點
當前提交
cfd2ca2960
共有 2 個文件被更改,包括 205 次插入200 次删除
  1. 9 4
      pom.xml
  2. 196 196
      src/test/java/cn/cslg/pas/novelty/GetReportInfoFromWDTest.java

+ 9 - 4
pom.xml

@@ -194,12 +194,17 @@
             <artifactId>c3p0</artifactId>
             <version>0.9.5.2</version>
         </dependency>
+<!--        <dependency>-->
+<!--            <groupId>e-iceblue</groupId>-->
+<!--            <artifactId>spire.pdf</artifactId>-->
+<!--            <version>8.7.0</version>-->
+<!--        </dependency>-->
+        <!-- Selenium WebDriver -->
         <dependency>
-            <groupId>e-iceblue</groupId>
-            <artifactId>spire.pdf</artifactId>
-            <version>8.7.0</version>
+            <groupId>org.seleniumhq.selenium</groupId>
+            <artifactId>selenium-java</artifactId>
+            <version>4.25.0</version>
         </dependency>
-
         <dependency>
             <groupId>joda-time</groupId>
             <artifactId>joda-time</artifactId>

+ 196 - 196
src/test/java/cn/cslg/pas/novelty/GetReportInfoFromWDTest.java

@@ -1,206 +1,206 @@
-//package cn.cslg.pas.novelty;
-//
-//import org.openqa.selenium1x.By;
-//import org.openqa.selenium.WebDriver;
-//import org.openqa.selenium.WebElement;
-//import org.openqa.selenium.chrome.ChromeDriver;
-//import org.openqa.selenium.chrome.ChromeOptions;
-//import org.openqa.selenium.support.ui.ExpectedCondition;
-//import org.openqa.selenium.support.ui.WebDriverWait;
-//import org.springframework.boot.test.context.SpringBootTest;
-//
-//import java.io.FileInputStream;
-//import java.io.IOException;
-//import java.time.Duration;
-//import java.util.HashMap;
-//import java.util.List;
-//import java.util.Map;
-//import java.util.Properties;
-//import java.util.concurrent.TimeUnit;
-//
-//@SpringBootTest
-//public class GetReportInfoFromWDTest {
-//
-//    public static Map<String, String> dynamicCaseInfo(String caseNo) {
-//        Properties properties = new Properties();
-//        try {
-//            properties.load(new FileInputStream("path/to/your/config.properties"));
-//        } catch (IOException e) {
-//            e.printStackTrace();
-//            throw new RuntimeException("Failed to load configuration properties");
-//        }
-//
-//        String strFileSavePath = properties.getProperty("IPEasySetting.DownloadFileSavePath");
-//        boolean isHeadless = Boolean.parseBoolean(properties.getProperty("IPEasySetting.isHeadless"));
-//        String account = properties.getProperty("IPEasySetting.Account");
-//        String password = properties.getProperty("IPEasySetting.Password");
-//        String chromeDriverPath = properties.getProperty("IPEasySetting.ChromeDriverPath");
-//        String iPEasyWeb = properties.getProperty("IPEasySetting.IPEasyWeb");
-//
-//        ChromeOptions options = new ChromeOptions();
-//        options.addArguments("user-data-dir=" + strFileSavePath);
-//        options.addArguments("--lang=nl");
-//        options.addArguments("--disable-popup-blocking");
-//        options.addArguments("--disable-images");
-//
-//        if (isHeadless) {
-//            options.addArguments("headless");
-//        }
-//
-//        WebDriver driver = null;
-//        Map<String, String> retObject = new HashMap<>();
-//
+package cn.cslg.pas.novelty;
+
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.chrome.ChromeDriver;
+import org.openqa.selenium.chrome.ChromeOptions;
+import org.openqa.selenium.support.ui.ExpectedCondition;
+import org.openqa.selenium.support.ui.WebDriverWait;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.time.Duration;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.concurrent.TimeUnit;
+
+@SpringBootTest
+public class GetReportInfoFromWDTest {
+
+    public static Map<String, String> dynamicCaseInfo(String caseNo) {
+        Properties properties = new Properties();
+        try {
+            properties.load(new FileInputStream("path/to/your/config.properties"));
+        } catch (IOException e) {
+            e.printStackTrace();
+            throw new RuntimeException("Failed to load configuration properties");
+        }
+
+        String strFileSavePath = properties.getProperty("IPEasySetting.DownloadFileSavePath");
+        boolean isHeadless = Boolean.parseBoolean(properties.getProperty("IPEasySetting.isHeadless"));
+        String account = properties.getProperty("IPEasySetting.Account");
+        String password = properties.getProperty("IPEasySetting.Password");
+        String chromeDriverPath = properties.getProperty("IPEasySetting.ChromeDriverPath");
+        String iPEasyWeb = properties.getProperty("IPEasySetting.IPEasyWeb");
+
+        ChromeOptions options = new ChromeOptions();
+        options.addArguments("user-data-dir=" + strFileSavePath);
+        options.addArguments("--lang=nl");
+        options.addArguments("--disable-popup-blocking");
+        options.addArguments("--disable-images");
+
+        if (isHeadless) {
+            options.addArguments("headless");
+        }
+
+        WebDriver driver = null;
+        Map<String, String> retObject = new HashMap<>();
+
+        try {
+            System.setProperty("webdriver.chrome.driver", chromeDriverPath);
+            driver = new ChromeDriver(options);
+
+            driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
+            driver.manage().timeouts().pageLoadTimeout(100, TimeUnit.SECONDS);
+
+            driver.get(iPEasyWeb);
+
+            //进入登录界面
+            WebElement userField = driver.findElement(By.id("txtUser"));
+            WebElement pwdField = driver.findElement(By.id("txtPwd"));
+            WebElement loginButton = driver.findElement(By.id("btnLogin"));
+            //输入用户名和密码
+            userField.sendKeys(account);
+            pwdField.sendKeys(password);
+            //点击登录按钮
+            loginButton.click();
+
+            //关闭提示遮罩层
+            WebElement closeOverlay = driver.findElement(By.id("jpwClose"));
+            if (closeOverlay.isDisplayed()) {
+                closeOverlay.click();
+            }
+
+            //点击顶部菜单栏中的案件管理菜单
+            WebElement caseManagementMenu = driver.findElement(By.name("71A7CC35-F597-40E1-9FEF-BE622A3A3B63"));
+            caseManagementMenu.click();
+
+            //点击左侧 查询 菜单
+            WebElement searchMenu = driver.findElement(By.name("c3266ab3-521a-4815-8aaf-7dd0bc5a76af"));
+            searchMenu.click();
+
+            //切换到自定义报表Frame
+            driver.switchTo().frame(1);
+
+            WebElement inputSearch = driver.findElement(By.id("case_volume"));
+            inputSearch.sendKeys(caseNo.trim());
+
+            WebElement btnSearch = driver.findElement(By.id("btn_Search"));
+            btnSearch.click();
+
+            WebElement caseLink = driver.findElement(By.xpath("//a[contains(text()," + caseNo + ")]"));
+            caseLink.click();
+
+            driver.switchTo().parentFrame().switchTo().frame(2);
+
+            WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(20));
+            //等待页面上ID属性值为submitButton的元素加载完成
+            WebElement myElement = wait.until((ExpectedCondition<WebElement>) wd -> {
+                try {
+                    if (wd != null) {
+                        wd.switchTo().parentFrame().switchTo().frame(2);
+                        return wd.findElement(By.id("libase"));
+                    }
+                } catch (Exception e) {
+                    return null;
+                }
+                return null;
+            });
+
+            myElement.click();
+
+            // 案件号
+            retObject.put("CaseNo", caseNo.trim());
+            //案件名称
+            retObject.put("CaseName", driver.findElement(By.id("p_case_info__case_name")).getAttribute("value"));
+            //客户名称
+            retObject.put("CustomerName", driver.findElement(By.id("p_case_info__customer_id")).getAttribute("value"));
+            //业务类型
+            retObject.put("BusinessType", driver.findElement(By.id("p_case_info__business_type_id")).getAttribute("value"));
+            retObject.put("CaseState", getSelectText(driver.findElement(By.id("p_case_info__case_status_id"))));
+            retObject.put("ApplicationType", getSelectText(driver.findElement(By.id("p_case_info__apply_type_id"))));
+
+            //案件类型
+            retObject.put("CaseType", driver.findElement(By.id("p_case_info__case_type_id")).getAttribute("value"));
+            //委案日期
+            retObject.put("EntrustingDate", driver.findElement(By.id("p_case_info__charge_date")).getAttribute("value"));
+            //案件备注
+            retObject.put("CaseMemo", driver.findElement(By.id("p_case_info__remark")).getAttribute("value"));
+
+            WebElement expandInfoButton = driver.findElement(By.xpath("//span[contains(text(),'扩展信息')]"));
+            expandInfoButton.click();
+            retObject.put("CaseCoefficient", getSelectText(driver.findElement(By.id("p_case_info__case_coefficient_id"))));
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RuntimeException("An error occurred while retrieving case info", e);
+        } finally {
+            if (driver != null) {
+                driver.quit();
+                // killChromProcess() equivalent in Java can be achieved by ensuring the driver process is killed
+                // This can be platform-specific and might not be necessary if driver.quit() is sufficient
+            }
+        }
+
+        return retObject;
+    }
+
+    public static String getSelectText(WebElement element) {
+        String strValue = element.getAttribute("value");
+
+        if (strValue == null || strValue.isEmpty()) {
+            return null;
+        }
+
+        List<WebElement> ops = element.findElements(By.tagName("option"));
+        for (WebElement op : ops) {
+            if (op.getAttribute("value").equals(strValue)) {
+                return op.getText();
+            }
+        }
+
+        return null;
+    }
+//
+//    public static void killChromeProcesses() {
 //        try {
-//            System.setProperty("webdriver.chrome.driver", chromeDriverPath);
-//            driver = new ChromeDriver(options);
-//
-//            driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
-//            driver.manage().timeouts().pageLoadTimeout(100, TimeUnit.SECONDS);
-//
-//            driver.get(iPEasyWeb);
-//
-//            //进入登录界面
-//            WebElement userField = driver.findElement(By.id("txtUser"));
-//            WebElement pwdField = driver.findElement(By.id("txtPwd"));
-//            WebElement loginButton = driver.findElement(By.id("btnLogin"));
-//            //输入用户名和密码
-//            userField.sendKeys(account);
-//            pwdField.sendKeys(password);
-//            //点击登录按钮
-//            loginButton.click();
-//
-//            //关闭提示遮罩层
-//            WebElement closeOverlay = driver.findElement(By.id("jpwClose"));
-//            if (closeOverlay.isDisplayed()) {
-//                closeOverlay.click();
-//            }
-//
-//            //点击顶部菜单栏中的案件管理菜单
-//            WebElement caseManagementMenu = driver.findElement(By.name("71A7CC35-F597-40E1-9FEF-BE622A3A3B63"));
-//            caseManagementMenu.click();
-//
-//            //点击左侧 查询 菜单
-//            WebElement searchMenu = driver.findElement(By.name("c3266ab3-521a-4815-8aaf-7dd0bc5a76af"));
-//            searchMenu.click();
-//
-//            //切换到自定义报表Frame
-//            driver.switchTo().frame(1);
+//            // 获取所有名为 "chrome" 的进程
+//            List<ProcessHandle> chromeProcesses = ProcessHandle.allProcesses()
+//                    .filter(ph -> ph.info().command().orElse("").toLowerCase().contains("chrome"))
+//                    .collect(Collectors.toList());
 //
-//            WebElement inputSearch = driver.findElement(By.id("case_volume"));
-//            inputSearch.sendKeys(caseNo.trim());
-//
-//            WebElement btnSearch = driver.findElement(By.id("btn_Search"));
-//            btnSearch.click();
-//
-//            WebElement caseLink = driver.findElement(By.xpath("//a[contains(text()," + caseNo + ")]"));
-//            caseLink.click();
-//
-//            driver.switchTo().parentFrame().switchTo().frame(2);
-//
-//            WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(20));
-//            //等待页面上ID属性值为submitButton的元素加载完成
-//            WebElement myElement = wait.until((ExpectedCondition<WebElement>) wd -> {
+//            for (ProcessHandle chromeProcess : chromeProcesses) {
 //                try {
-//                    if (wd != null) {
-//                        wd.switchTo().parentFrame().switchTo().frame(2);
-//                        return wd.findElement(By.id("libase"));
-//                    }
-//                } catch (Exception e) {
-//                    return null;
+//                    chromeProcess.destroy(); // 尝试终止进程
+//                    chromeProcess.waitFor(10, TimeUnit.SECONDS); // 等待进程退出,超时为10秒
+//                } catch (InterruptedException | TimeoutException e) {
+//                    // 处理异常,例如进程没有在指定时间内退出
+//                    e.printStackTrace();
 //                }
-//                return null;
-//            });
-//
-//            myElement.click();
-//
-//            // 案件号
-//            retObject.put("CaseNo", caseNo.trim());
-//            //案件名称
-//            retObject.put("CaseName", driver.findElement(By.id("p_case_info__case_name")).getAttribute("value"));
-//            //客户名称
-//            retObject.put("CustomerName", driver.findElement(By.id("p_case_info__customer_id")).getAttribute("value"));
-//            //业务类型
-//            retObject.put("BusinessType", driver.findElement(By.id("p_case_info__business_type_id")).getAttribute("value"));
-//            retObject.put("CaseState", getSelectText(driver.findElement(By.id("p_case_info__case_status_id"))));
-//            retObject.put("ApplicationType", getSelectText(driver.findElement(By.id("p_case_info__apply_type_id"))));
-//
-//            //案件类型
-//            retObject.put("CaseType", driver.findElement(By.id("p_case_info__case_type_id")).getAttribute("value"));
-//            //委案日期
-//            retObject.put("EntrustingDate", driver.findElement(By.id("p_case_info__charge_date")).getAttribute("value"));
-//            //案件备注
-//            retObject.put("CaseMemo", driver.findElement(By.id("p_case_info__remark")).getAttribute("value"));
-//
-//            WebElement expandInfoButton = driver.findElement(By.xpath("//span[contains(text(),'扩展信息')]"));
-//            expandInfoButton.click();
-//            retObject.put("CaseCoefficient", getSelectText(driver.findElement(By.id("p_case_info__case_coefficient_id"))));
-//
-//        } catch (Exception e) {
-//            e.printStackTrace();
-//            throw new RuntimeException("An error occurred while retrieving case info", e);
-//        } finally {
-//            if (driver != null) {
-//                driver.quit();
-//                // killChromProcess() equivalent in Java can be achieved by ensuring the driver process is killed
-//                // This can be platform-specific and might not be necessary if driver.quit() is sufficient
 //            }
-//        }
 //
-//        return retObject;
-//    }
-//
-//    public static String getSelectText(WebElement element) {
-//        String strValue = element.getAttribute("value");
+//            // 获取所有名为 "chromedriver" 的进程
+//            List<ProcessHandle> chromedriverProcesses = ProcessHandle.allProcesses()
+//                    .filter(ph -> ph.info().command().orElse("").toLowerCase().contains("chromedriver"))
+//                    .collect(Collectors.toList());
 //
-//        if (strValue == null || strValue.isEmpty()) {
-//            return null;
-//        }
-//
-//        List<WebElement> ops = element.findElements(By.tagName("option"));
-//        for (WebElement op : ops) {
-//            if (op.getAttribute("value").equals(strValue)) {
-//                return op.getText();
+//            for (ProcessHandle chromedriverProcess : chromedriverProcesses) {
+//                try {
+//                    chromedriverProcess.destroy(); // 尝试终止进程
+//                    chromedriverProcess.waitFor(10, TimeUnit.SECONDS); // 等待进程退出,超时为10秒
+//                } catch (InterruptedException | TimeoutException e) {
+//                    // 处理异常,例如进程没有在指定时间内退出
+//                    e.printStackTrace();
+//                }
 //            }
+//        } catch (IOException e) {
+//            // 处理获取进程列表时可能发生的异常
+//            e.printStackTrace();
 //        }
-//
-//        return null;
 //    }
-////
-////    public static void killChromeProcesses() {
-////        try {
-////            // 获取所有名为 "chrome" 的进程
-////            List<ProcessHandle> chromeProcesses = ProcessHandle.allProcesses()
-////                    .filter(ph -> ph.info().command().orElse("").toLowerCase().contains("chrome"))
-////                    .collect(Collectors.toList());
-////
-////            for (ProcessHandle chromeProcess : chromeProcesses) {
-////                try {
-////                    chromeProcess.destroy(); // 尝试终止进程
-////                    chromeProcess.waitFor(10, TimeUnit.SECONDS); // 等待进程退出,超时为10秒
-////                } catch (InterruptedException | TimeoutException e) {
-////                    // 处理异常,例如进程没有在指定时间内退出
-////                    e.printStackTrace();
-////                }
-////            }
-////
-////            // 获取所有名为 "chromedriver" 的进程
-////            List<ProcessHandle> chromedriverProcesses = ProcessHandle.allProcesses()
-////                    .filter(ph -> ph.info().command().orElse("").toLowerCase().contains("chromedriver"))
-////                    .collect(Collectors.toList());
-////
-////            for (ProcessHandle chromedriverProcess : chromedriverProcesses) {
-////                try {
-////                    chromedriverProcess.destroy(); // 尝试终止进程
-////                    chromedriverProcess.waitFor(10, TimeUnit.SECONDS); // 等待进程退出,超时为10秒
-////                } catch (InterruptedException | TimeoutException e) {
-////                    // 处理异常,例如进程没有在指定时间内退出
-////                    e.printStackTrace();
-////                }
-////            }
-////        } catch (IOException e) {
-////            // 处理获取进程列表时可能发生的异常
-////            e.printStackTrace();
-////        }
-////    }
-//
-//}
+
+}