|
@@ -2,9 +2,11 @@
|
|
|
using System.Data;
|
|
|
using System.Diagnostics;
|
|
|
using System.Dynamic;
|
|
|
+using System.IO;
|
|
|
using System.Linq;
|
|
|
using OpenQA.Selenium;
|
|
|
using OpenQA.Selenium.Chrome;
|
|
|
+using OpenQA.Selenium.Support.Extensions;
|
|
|
|
|
|
namespace wispro.sp.utility
|
|
|
{
|
|
@@ -95,6 +97,15 @@ namespace wispro.sp.utility
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private static void Log(string strMessage)
|
|
|
+ {
|
|
|
+ StreamWriter sw = File.AppendText("c:\\temp\\log.txt");
|
|
|
+ sw.WriteLine($"{strMessage}");
|
|
|
+ sw.Flush();
|
|
|
+ sw.Close();
|
|
|
+ sw.Dispose();
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 根据报表名称导出报表
|
|
|
/// </summary>
|
|
@@ -102,6 +113,7 @@ namespace wispro.sp.utility
|
|
|
/// <param name="isModifyDate">是否手动修改日期范围</param>
|
|
|
public static DataTable DownloadReport(string ReportName,bool isModifyDate)
|
|
|
{
|
|
|
+ Log($"{DateTime.Now}\t开始下载:{ReportName}");
|
|
|
DataTable retDatatable;
|
|
|
string strFileSavePath = ConfigHelper.GetSectionValue("IPEasySetting:DownloadFileSavePath");
|
|
|
bool isheadless = (ConfigHelper.GetSectionValue("IPEasySetting:isHeadless") == "true");
|
|
@@ -118,15 +130,18 @@ namespace wispro.sp.utility
|
|
|
{
|
|
|
options.AddArgument("headless");
|
|
|
}
|
|
|
-
|
|
|
+ Log($"{DateTime.Now}\t开始启动Chrome");
|
|
|
using (IWebDriver driver = new OpenQA.Selenium.Chrome.ChromeDriver(ConfigHelper.GetSectionValue("IPEasySetting:ChormeDriverPath"), options))
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
+ Log($"{DateTime.Now}\tIWebDriver配置");
|
|
|
+ driver.Manage().Window.Maximize();
|
|
|
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(50);
|
|
|
driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(500);
|
|
|
|
|
|
//进入登录界面
|
|
|
+ Log($"{DateTime.Now}\t开始进入登录界面");
|
|
|
driver.Navigate().GoToUrl(ConfigHelper.GetSectionValue("IPEasySetting:IPEasyWeb"));
|
|
|
|
|
|
//输入用户名和密码
|
|
@@ -134,26 +149,38 @@ namespace wispro.sp.utility
|
|
|
driver.FindElement(By.Id("txtPwd")).SendKeys(Password);
|
|
|
|
|
|
//点击登录按钮
|
|
|
+ Log($"{DateTime.Now}\t开始点击登录按钮");
|
|
|
driver.FindElement(By.Id("btnLogin")).Click();
|
|
|
|
|
|
//关闭提示遮罩层
|
|
|
+ Log($"{DateTime.Now}\t关闭提示遮罩层");
|
|
|
driver.FindElement(By.Id("jpwClose")).Click();
|
|
|
|
|
|
//点击顶部菜单栏中的报表管理菜单
|
|
|
- driver.FindElement(By.Name("970d33d5-c728-41b8-a060-4330610706b9")).Click();
|
|
|
+ Log($"{DateTime.Now}\t点击顶部菜单栏中的报表管理菜单");
|
|
|
+ var reportMenu = driver.FindElement(By.Name("970d33d5-c728-41b8-a060-4330610706b9"));
|
|
|
+ driver.ExecuteJavaScript("arguments[0].click();", reportMenu);
|
|
|
|
|
|
//点击左侧 自定义报表 菜单
|
|
|
- driver.FindElement(By.Name("642fa96f-1e1f-46fd-aaa4-cb461ee8df5b")).Click();
|
|
|
-
|
|
|
+ Log($"{DateTime.Now}\t点击左侧 自定义报表 菜单");
|
|
|
+ var customerReportMenu = driver.FindElement(By.Name("642fa96f-1e1f-46fd-aaa4-cb461ee8df5b"));
|
|
|
+ driver.ExecuteJavaScript("arguments[0].click();", customerReportMenu);
|
|
|
+
|
|
|
//切换到自定义报表Frame
|
|
|
+ Log($"{DateTime.Now}\t切换到自定义报表Frame");
|
|
|
driver.SwitchTo().Frame(1);
|
|
|
|
|
|
+ Log($"{DateTime.Now}\t开始搜索报告");
|
|
|
var inputSearch = driver.FindElement(By.Id("customizedList_TxtSheetSearchKey"));
|
|
|
|
|
|
+ Log($"{DateTime.Now}\t在搜索框中输入报告名称");
|
|
|
inputSearch.SendKeys(ReportName);
|
|
|
+
|
|
|
+ Log($"{DateTime.Now}\t点击搜索按钮");
|
|
|
var btnSearch = driver.FindElement(By.ClassName("btn-search"));
|
|
|
btnSearch.Click();
|
|
|
|
|
|
+ Log($"{DateTime.Now}\t选中报告");
|
|
|
var reportRecord = driver.FindElement(By.XPath($"//td[contains(text(),'{ReportName}')]"));
|
|
|
reportRecord.Click();
|
|
|
|
|
@@ -161,6 +188,7 @@ namespace wispro.sp.utility
|
|
|
|
|
|
if (isModifyDate)
|
|
|
{
|
|
|
+ Log($"{DateTime.Now}\t输入报告时间");
|
|
|
var btnEdit = driver.FindElement(By.ClassName("edit"));
|
|
|
btnEdit.Click();
|
|
|
System.Threading.Thread.Sleep(500);
|
|
@@ -191,17 +219,20 @@ namespace wispro.sp.utility
|
|
|
|
|
|
}
|
|
|
|
|
|
+ Log($"{DateTime.Now}\t点击导出Excel链接");
|
|
|
var linkExport = driver.FindElement(By.XPath("//a[contains(@onclick,'-') and @class='tbexcel']"));
|
|
|
linkExport.Click();
|
|
|
|
|
|
|
|
|
//切换到弹出的导出报表窗口,点击导出按钮
|
|
|
+ Log($"{DateTime.Now}\t切换到弹出的导出报表窗口,点击导出按钮");
|
|
|
driver.SwitchTo().DefaultContent();
|
|
|
var ihg_export = driver.FindElement(By.Name("ihg_export"));
|
|
|
driver.SwitchTo().Frame(ihg_export);
|
|
|
driver.FindElement(By.Id("btnSubmit")).Click();
|
|
|
-
|
|
|
+
|
|
|
//切换到弹出的下载报表界面,点击下载按钮
|
|
|
+ Log($"{DateTime.Now}\t切换到弹出的下载报表界面,点击下载按钮");
|
|
|
System.Threading.Thread.Sleep(3000);
|
|
|
driver.SwitchTo().DefaultContent();
|
|
|
var frameDownload = driver.FindElement(By.Name("DownloadList"));
|
|
@@ -217,6 +248,7 @@ namespace wispro.sp.utility
|
|
|
strStatus = tdStatus.Text;
|
|
|
}
|
|
|
|
|
|
+ Log($"{DateTime.Now}\t点击下载按钮下载文档");
|
|
|
firstTr = driver.FindElement(By.TagName("tr"));
|
|
|
firstTr.FindElement(By.XPath("//td/a[@title='下载']")).Click();
|
|
|
//System.Threading.Thread.Sleep(5000);
|
|
@@ -247,6 +279,7 @@ namespace wispro.sp.utility
|
|
|
}
|
|
|
|
|
|
//删除下载记录
|
|
|
+ Log($"{DateTime.Now}\t删除下载记录");
|
|
|
firstTr = driver.FindElement(By.TagName("tr"));
|
|
|
firstTr.FindElement(By.XPath("//td/a[@title='删除']")).Click();
|
|
|
|
|
@@ -256,15 +289,19 @@ namespace wispro.sp.utility
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
+ Log(ex.ToString());
|
|
|
throw new Exception(ex.Message, ex);
|
|
|
}
|
|
|
finally
|
|
|
{
|
|
|
+ Log("关闭Chrome");
|
|
|
killChromProcess();
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+ Log($"{DateTime.Now}\t返回数据");
|
|
|
return retDatatable;
|
|
|
}
|
|
|
|