C#?CefSharp?根據(jù)輸入日期段自動(dòng)選擇日期的操作代碼
前言
搞這個(gè)Demo整整搞幾天通宵,爆肝了。后做的效果出來(lái),還是不錯(cuò)的。給小伙伴看看效果圖。
1, 遇到的問(wèn)題
- 日期之間相差多少個(gè)月數(shù)。開(kāi)始時(shí)間框點(diǎn)擊對(duì)應(yīng)月份要點(diǎn)擊多少次,結(jié)束時(shí)間框點(diǎn)擊對(duì)應(yīng)月份要點(diǎn)擊多少次
- Xpath獲取問(wèn)題。找到對(duì)應(yīng)html元素包含那個(gè)元素,比如 querySelectorAll('td[class$="view"]')。
C# 代碼
日期之間可能出現(xiàn)的情況:
// 第1種 :2023-11-1 到 2023-11-1
// 第2種 :2023-11-1 到 2023-12-25
// 第3種 :2023-11-1 到 2024-1-15
// 第4種 :2023-10-29 到 2024-1-15
// 1, 獲取到時(shí)間 string star_time = StartTime.Text; string end_time = EndTime.Text; // 2, 點(diǎn)擊這個(gè)自定義時(shí)間 彈出時(shí)間框 var btss = csbrowser.EvaluateScript(chromiumWebBrowser1.GetMainFrame(), Properties.Resources.ClickSelectTime); csbrowser.WaitBusy(chromiumWebBrowser1, 30, 1000); // 3, 獲取彈出時(shí)間框 當(dāng)前時(shí)間 string start_Year_Month_code = "document.querySelector(\"body > div:nth-child(7) > div > div > div > div.cook-picker-panel-container > div > div:nth-child(1) > div > div.cook-picker-header > div > button.cook-picker-month-btn\")"; var start_Year_Month = csbrowser.EvaluateScript(chromiumWebBrowser1.GetMainFrame(), Properties.Resources.GetCustomTime); List<SelectTime> selectTimes = Newtonsoft.Json.JsonConvert.DeserializeObject<List<SelectTime>>(start_Year_Month.ToString()); SelectTime selectTime_start = new SelectTime(); SelectTime selectTime_end = new SelectTime(); if (selectTimes==null) { return; } foreach (SelectTime item in selectTimes) { if (item.StartOrEnd_Time_Type == StartOrEnd_Time.Start_Time) { List<string> dd = new List<string>(); if (star_time.Contains("-")) { dd = star_time.Split('-')?.ToList(); } else if (star_time.Contains(".")) { dd = star_time.Split('.')?.ToList(); } if (dd.Count == 3) { selectTime_start.Year_Time = dd[0]; selectTime_start.Month_Time = dd[1]; selectTime_start.Day_Time = dd[2]; if (int.TryParse(selectTime_start.Year_Time, out int input_Year) && int.TryParse(selectTime_start.Month_Time, out int input_Month) && int.TryParse(selectTime_start.Day_Time, out int input_Day) && int.TryParse(item.Year_Time, out int 彈視框_start_year) && int.TryParse(item.Month_Time, out int 彈視框_start_Month) && int.TryParse(item.Day_Time, out int 彈視框_start_Day)) { Task task = null; //對(duì)比選擇上個(gè)時(shí)間得 DateTime date1 = new DateTime(input_Year, input_Month, input_Day); // 第一個(gè)日期對(duì)象 DateTime date2 = new DateTime(彈視框_start_year, 彈視框_start_Month, 彈視框_start_Day); // 第二個(gè)日期對(duì)象 int ccc = MonthCount(date1, date2); var months = ((date2.Year - date1.Year) * 12) + date2.Month - date1.Month; task = Task.Run(() => { }); int yearDiff = Math.Abs((date1 - date2).Days); // 計(jì)算年份之間的差值(取絕對(duì)值) int monthDiff = (date1 - date2).Days; decimal decimal_oo = Math.Floor((decimal)yearDiff / 30); if (yearDiff < 30) { decimal_oo = Math.Ceiling((decimal)yearDiff / 30); if (input_Year == 彈視框_start_year && input_Month == 彈視框_start_Month) { csbrowser.WaitBusy(chromiumWebBrowser1, 30, 1000); task = Task.Run(() => { }); } else { decimal_oo = months; //csbrowser.WaitBusy(chromiumWebBrowser1, 30, 1000); task = Task.Run(() => { for (int i = 0; i < decimal_oo; i++) { var start_Year_Month_num = csbrowser.EvaluateScript(chromiumWebBrowser1.GetMainFrame(), Properties.Resources.ClickStart_Moth_Time); } }); } } else { if (yearDiff < 30) { decimal_oo = Math.Ceiling((decimal)Math.Abs(yearDiff) / 30); } else { decimal_oo = Math.Round((decimal)Math.Abs(yearDiff) / 30); //decimal_oo = Math.Floor((decimal)Math.Abs(yearDiff) / 30); } decimal_oo = months; csbrowser.WaitBusy(chromiumWebBrowser1, 30, 1000); task = Task.Run(() => { //chromiumWebBrowser1.GetMainFrame().ExecuteJavaScriptAsync( Properties.Resources.JavaScript1, "13215313335"); //csbrowser.WaitBusy(chromiumWebBrowser1.GetFrame(, 30, 1000); for (int i = 0; i < decimal_oo; i++) { var start_Year_Month_num = csbrowser.EvaluateScript(chromiumWebBrowser1.GetMainFrame(), Properties.Resources.ClickStart_Moth_Time); } }); } string code_click_num = "var num_click = " + input_Day.ToString() + ";var result = document.querySelector(\"body > div:nth-child(7) > div > div > div > div.cook-picker-panel-container > div > div:nth-child(1) > div > div.cook-picker-body\").querySelectorAll('td[class$=\"view\"]');for (let index = 0; index < result.length; index++){const element = result[index].outerText;if (num_click == element){result[index].click();}}"; if (task.Wait(5000)) { chromiumWebBrowser1.GetMainFrame().ExecuteJavaScriptAsync(code_click_num); } } } } if (item.StartOrEnd_Time_Type == StartOrEnd_Time.End_Time) { List<string> dd = new List<string>(); if (end_time.Contains("-")) { dd = end_time.Split('-')?.ToList(); } else if(end_time.Contains(".")) { dd = end_time.Split('.')?.ToList(); } //SelectTime selectTime = new SelectTime(); if (dd.Count == 3) { // selectTime_end.Year_Time = dd[0]; selectTime_end.Month_Time = dd[1]; selectTime_end.Day_Time = dd[2]; // 選擇定開(kāi)啟時(shí)間后,再 var end_Year_Month_num = csbrowser.EvaluateScript(chromiumWebBrowser1.GetMainFrame(), Properties.Resources.NewGetEndTime); if (end_Year_Month_num!=null && end_Year_Month_num.StartsWith("{")) { // 獲取彈視框里的時(shí)間 SelectTime 彈視框_End_Times = Newtonsoft.Json.JsonConvert.DeserializeObject<SelectTime>(end_Year_Month_num.ToString()); if (彈視框_End_Times != null ) { 彈視框_End_Times.Day_Time = "15"; if (int.TryParse(彈視框_End_Times.Year_Time, out int 彈視框_End_Times_Year) && int.TryParse(彈視框_End_Times.Month_Time, out int 彈視框_End_Times_Month) && int.TryParse(彈視框_End_Times.Day_Time, out int 彈視框_End_Times_Day) && int.TryParse(selectTime_end.Year_Time, out int input_end_Year2) && int.TryParse(selectTime_end.Month_Time, out int input_end_Month2) && int.TryParse(selectTime_end.Day_Time, out int input_end_Day2) && int.TryParse(selectTime_start.Year_Time, out int input_start_Year) && int.TryParse(selectTime_start.Month_Time, out int input_start_Month) && int.TryParse(selectTime_start.Day_Time, out int input_start_Day)) { Task task = null; 輸入的開(kāi)始時(shí)間和 輸入的end的時(shí)間 進(jìn)行 對(duì)比 DateTime date1 = new DateTime(input_start_Year, input_start_Month, input_start_Day); // 第一個(gè)日期對(duì)象 DateTime date2 = new DateTime(input_end_Year2, input_end_Month2, input_end_Day2); // 第二個(gè)日期對(duì)象 int yearDiff = Math.Abs((date1 - date2).Days); // 計(jì)算年份之間的差值(取絕對(duì)值) int monthDiff = (date1 - date2).Days; decimal decimal_oo = Math.Floor((decimal)yearDiff / 30); if (yearDiff < 30) { task = Task.Run(() => { }); decimal_oo = Math.Ceiling((decimal)yearDiff / 30); if (decimal_oo == 0) { //MessageBox.Show("yearDiff < 30 " + decimal_oo.ToString()); //點(diǎn)擊start框的時(shí)間框 string code_click_num = "var num_click = " + input_end_Day2.ToString() + ";var result = document.querySelector(\"body > div:nth-child(7) > div > div > div > div.cook-picker-panel-container > div > div:nth-child(1) > div > div.cook-picker-body\").querySelectorAll('td[class$=\"cook-picker-cell-range-start-single\"]');for (let index = 0; index < result.length; index++){const element = result[index].outerText;if (num_click == element){result[index].click();}}"; if (task.Wait(5000)) { chromiumWebBrowser1.GetMainFrame().ExecuteJavaScriptAsync(code_click_num); } } else { // MessageBox.Show("yearDiff < 30"); //就是同一個(gè) 開(kāi)始時(shí)間框 //點(diǎn)擊開(kāi)始時(shí)間框 string code_click_num = "var num_click = " + input_end_Day2.ToString() + ";var result = document.querySelector(\"body > div:nth-child(7) > div > div > div > div.cook-picker-panel-container > div > div:nth-child(1) > div > div.cook-picker-body\").querySelectorAll('td[class$=\"view\"]');for (let index = 0; index < result.length; index++){const element = result[index].outerText;if (num_click == element){result[index].click();}}"; if (input_start_Year == input_end_Year2 && input_start_Month == input_end_Month2) { code_click_num = "var num_click = " + input_end_Day2.ToString() + ";var result = document.querySelector(\"body > div:nth-child(7) > div > div > div > div.cook-picker-panel-container > div > div:nth-child(1) > div > div.cook-picker-body\").querySelectorAll('td[class$=\"view\"]');for (let index = 0; index < result.length; index++){const element = result[index].outerText;if (num_click == element){result[index].click();}}"; } else { code_click_num = "var num_click = " + input_end_Day2.ToString() + ";var result = document.querySelector(\"body > div:nth-child(7) > div > div > div > div.cook-picker-panel-container > div > div:nth-child(2) > div > div.cook-picker-body\").querySelectorAll('td[class$=\"view\"]');for (let index = 0; index < result.length; index++){const element = result[index].outerText;if (num_click == element){result[index].click();}}"; } if (task.Wait(5000)) { chromiumWebBrowser1.GetMainFrame().ExecuteJavaScriptAsync(code_click_num); } } } else// 超過(guò)31天的 { csbrowser.WaitBusy(chromiumWebBrowser1, 30, 1000); //輸入的開(kāi)始時(shí)間和 彈視框里的時(shí)間 進(jìn)行 對(duì)比,是否點(diǎn)擊下一個(gè)月。 DateTime date_彈視框 = new DateTime(彈視框_End_Times_Year, 彈視框_End_Times_Month, 彈視框_End_Times_Day); // 第二個(gè)日期對(duì)象 var months = ((date2.Year - date_彈視框.Year) * 12) + date2.Month - date_彈視框.Month; if (date_彈視框.Year == date2.Year && date_彈視框.Month == date2.Month) { //MessageBox.Show("date_彈視框.Year == date2.Year && date_彈視框.Month == date2.Month"); task = Task.Run(() => { }); // 點(diǎn)擊彈視框里的時(shí)間 string code_click_num = "var num_click = " + input_end_Day2.ToString() + ";var result = document.querySelector(\"body > div:nth-child(7) > div > div > div > div.cook-picker-panel-container > div > div:nth-child(2) > div > div.cook-picker-body\").querySelectorAll('td[class$=\"view\"]');for (let index = 0; index < result.length; index++){const element = result[index].outerText;if (num_click == element){result[index].click();}}"; if (task.Wait(5000)) { chromiumWebBrowser1.GetMainFrame().ExecuteJavaScriptAsync(code_click_num); } } else { decimal_oo = months; task = Task.Run(() => { for (int i = 0; i < decimal_oo; i++) { var start_Year_Month_num = csbrowser.EvaluateScript(chromiumWebBrowser1.GetMainFrame(), Properties.Resources.ClickEnd_Moth_Time); } }); // 點(diǎn)擊彈視框里的時(shí)間 string code_click_num = "var num_click = " + input_end_Day2.ToString() + ";var result = document.querySelector(\"body > div:nth-child(7) > div > div > div > div.cook-picker-panel-container > div > div:nth-child(2) > div > div.cook-picker-body\").querySelectorAll('td[class$=\"view\"]');for (let index = 0; index < result.length; index++){const element = result[index].outerText;if (num_click == element){result[index].click();}}"; if (task.Wait(5000)) { chromiumWebBrowser1.GetMainFrame().ExecuteJavaScriptAsync(code_click_num); } } } } } } } } }
Js 代碼
1, 獲取點(diǎn)擊按鈕彈出時(shí)間框里開(kāi)始和結(jié)束時(shí)間,文件GetCustomTime.js
var start_Year_code = document.querySelector("body > div:nth-child(7) > div > div > div > div.cook-picker-panel-container > div > div:nth-child(1) > div > div.cook-picker-header > div > button.cook-picker-year-btn"); var start_Year_Month_code = document.querySelector("body > div:nth-child(7) > div > div > div > div.cook-picker-panel-container > div > div:nth-child(1) > div > div.cook-picker-header > div > button.cook-picker-month-btn"); var start_Year_Month_Day_code = document.querySelector("body > div:nth-child(7) > div > div > div > div.cook-picker-panel-container > div > div:nth-child(1) > div > div.cook-picker-body > table > tbody > tr:nth-child(3) > td.cook-picker-cell.cook-picker-cell-disabled.cook-picker-cell-in-view.cook-picker-cell-today > div"); var result = document.querySelector("body > div:nth-child(7) > div > div > div > div.cook-picker-panel-container > div > div:nth-child(1) > div > div.cook-picker-body").querySelectorAll('td[class$="cook-picker-cell-today"]'); if (result != undefined && result.length > 0) { //alert(result[0].outerText); start_Year_Month_Day_code = result[0]; } var start_Year_Time = start_Year_code != undefined ? start_Year_code.outerText.replace("年", '') : ""; var start_Month_Time = start_Year_Month_code != undefined ? start_Year_Month_code.outerText.replace("月", '') : ""; var start_Day_Time = start_Year_Month_Day_code != undefined ? start_Year_Month_Day_code.outerText : ""; var end_Year_code = document.querySelector("body > div:nth-child(7) > div > div > div > div.cook-picker-panel-container > div > div:nth-child(2) > div > div.cook-picker-header > div > button.cook-picker-year-btn"); var end_Year_Month_code = document.querySelector("body > div:nth-child(7) > div > div > div > div.cook-picker-panel-container > div > div:nth-child(2) > div > div.cook-picker-header > div > button.cook-picker-month-btn"); var end_Year_Time = end_Year_code != undefined ? end_Year_code.outerText.replace("年", '') : ""; var end_Month_Time = end_Year_Month_code != undefined ? end_Year_Month_code.outerText.replace("月", '') : ""; var json = [ { "Year_Time": start_Year_Time, "Month_Time": start_Month_Time, "Day_Time": start_Day_Time, "StartOrEnd_Time_Type": "Start_Time" }, { "Year_Time": end_Year_Time, "Month_Time": end_Month_Time, "Day_Time": start_Day_Time, "StartOrEnd_Time_Type": "End_Time" }, ]; [JSON.stringify(json)].toString();
2,點(diǎn)擊開(kāi)始時(shí)間框的按鈕跳轉(zhuǎn)月數(shù),文件ClickStart_Moth_Time.js
var click_name = document.querySelector("body > div:nth-child(7) > div > div > div > div.cook-picker-panel-container > div > div:nth-child(1) > div > div.cook-picker-header > button:nth-child(2)"); if (click_name != undefined) { click_name.click(); } [click_name != undefined ? click_name.innerHTML:"", is_ok_click].toString();
3,點(diǎn)擊結(jié)束時(shí)間框的按鈕跳轉(zhuǎn)月數(shù),文件ClickEnd_Moth_Time.js
var click_name = document.querySelector("body > div:nth-child(7) > div > div > div > div.cook-picker-panel-container > div > div:nth-child(2) > div > div.cook-picker-header > button.cook-picker-header-next-btn"); if (click_name != undefined) { click_name.click(); } [click_name != undefined ? click_name.innerHTML:"", is_ok_click].toString();
4,點(diǎn)擊開(kāi)始時(shí)間框的按鈕跳轉(zhuǎn)月數(shù)后,再獲取結(jié)束時(shí)間框里的時(shí)間,NewGetEndTime.js
var click_name = document.querySelector("body > div:nth-child(7) > div > div > div > div.cook-picker-panel-container > div > div:nth-child(2) > div > div.cook-picker-header > button.cook-picker-header-next-btn"); if (click_name != undefined) { click_name.click(); } [click_name != undefined ? click_name.innerHTML:"", is_ok_click].toString();
到此這篇關(guān)于C# CefSharp 根據(jù)輸入日期段自動(dòng)選擇日期的操作代碼的文章就介紹到這了,更多相關(guān)C# 輸入日期段自動(dòng)選擇日期內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C# winForm實(shí)現(xiàn)的氣泡提示窗口功能示例
這篇文章主要介紹了C# winForm實(shí)現(xiàn)的氣泡提示窗口功能,涉及C# winForm窗口屬性與設(shè)置相關(guān)操作技巧,需要的朋友可以參考下2018-03-03c#實(shí)現(xiàn)識(shí)別圖片上的驗(yàn)證碼數(shù)字
這篇文章主要介紹了c#實(shí)現(xiàn)識(shí)別圖片上的驗(yàn)證碼數(shù)字的方法,本文給大家匯總了2種方法,有需要的小伙伴可以參考下。2015-11-11Unity3D實(shí)現(xiàn)物體旋轉(zhuǎn)縮放移動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了Unity3D實(shí)現(xiàn)物體旋轉(zhuǎn)縮放移動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02C#搜索TreeView子節(jié)點(diǎn),保留父節(jié)點(diǎn)的方法
這篇文章主要介紹了C#搜索TreeView子節(jié)點(diǎn),保留父節(jié)點(diǎn)的方法,實(shí)例分析了C#操作TreeView節(jié)點(diǎn)的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09c#之用戶定義的數(shù)據(jù)類型轉(zhuǎn)換介紹
c#允許定義自己的數(shù)據(jù)類型,這意味著需要某些工具支持在自己的數(shù)據(jù)類型間進(jìn)行數(shù)據(jù)轉(zhuǎn)換。方法是把數(shù)據(jù)類型轉(zhuǎn)換定義為相關(guān)類的一個(gè)成員運(yùn)算符,數(shù)據(jù)類型轉(zhuǎn)換必須聲明是隱式或者顯式,以說(shuō)明怎么使用它2014-01-01詳解如何使用BenchmarkDotNet對(duì).NET代碼進(jìn)行性能基準(zhǔn)測(cè)試
BenchmarkDotNet是一個(gè)基于.NET開(kāi)源、功能全面、易于使用的性能基準(zhǔn)測(cè)試框架,這篇文章就來(lái)和小編一起學(xué)習(xí)一下如何使用BenchmarkDotNet對(duì).NET代碼進(jìn)行性能基準(zhǔn)測(cè)試吧2024-12-12C#使用foreach語(yǔ)句簡(jiǎn)單遍歷數(shù)組的方法
這篇文章主要介紹了C#使用foreach語(yǔ)句簡(jiǎn)單遍歷數(shù)組的方法,涉及C#中foreach語(yǔ)句的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04詳解ASP.NET中Identity的身份驗(yàn)證代碼
這篇文章主要介紹了ASP.NET Identity 的“多重”身份驗(yàn)證代碼,以及實(shí)現(xiàn)的原理講解,需要的朋友參考一下。2017-12-12