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)文章
Unity 實(shí)現(xiàn)鼠標(biāo)滑過(guò)UI時(shí)觸發(fā)動(dòng)畫(huà)的操作
這篇文章主要介紹了Unity 實(shí)現(xiàn)鼠標(biāo)滑過(guò)UI時(shí)觸發(fā)動(dòng)畫(huà)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04
C#中使用DataContractSerializer類(lèi)實(shí)現(xiàn)深拷貝操作示例
這篇文章主要介紹了C#中使用DataContractSerializer類(lèi)實(shí)現(xiàn)深拷貝操作示例,本文給出了實(shí)現(xiàn)深拷貝方法、測(cè)試深拷貝方法例子、DataContractSerializer類(lèi)實(shí)現(xiàn)深拷貝的原理等內(nèi)容,需要的朋友可以參考下2015-06-06
C#中的Task.WaitAll和Task.WaitAny方法介紹
這篇文章介紹了C#中的Task.WaitAll和Task.WaitAny方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04
C#實(shí)現(xiàn)HTTP訪問(wèn)類(lèi)HttpHelper的示例詳解
在項(xiàng)目開(kāi)發(fā)過(guò)程中,我們經(jīng)常會(huì)訪問(wèn)第三方接口,如我們需要接入的第三方接口是Web API,這時(shí)候我們就需要使用HttpHelper調(diào)用遠(yuǎn)程接口了。本文為大家介紹了C#實(shí)現(xiàn)HTTP訪問(wèn)類(lèi)HttpHelper的示例代碼,需要的可以參考一下2022-09-09
使用C#實(shí)現(xiàn)讀取系統(tǒng)配置文件的代碼實(shí)例講解
這篇文章主要介紹了使用C#實(shí)現(xiàn)讀取系統(tǒng)配置文件的代碼實(shí)例,使用到了ConfigurationManager類(lèi),需要的朋友可以參考下2015-12-12
結(jié)合.net框架在C#派生類(lèi)中觸發(fā)基類(lèi)事件及實(shí)現(xiàn)接口事件
這篇文章主要介紹了結(jié)合.net框架在C#派生類(lèi)中觸發(fā)基類(lèi)事件及實(shí)現(xiàn)接口事件,示例的事件編程中包括接口和類(lèi)的繼承等面向?qū)ο蟮幕A(chǔ)知識(shí),需要的朋友可以參考下2016-02-02
C# 對(duì)MongoDB 進(jìn)行增刪改查的簡(jiǎn)單操作實(shí)例
這篇文章介紹了C# 對(duì)MongoDB 進(jìn)行增刪改查的簡(jiǎn)單操作實(shí)例,有需要的朋友可以參考一下2013-09-09
unity 如何獲取Text組件里text內(nèi)容的長(zhǎng)度
這篇文章主要介紹了unity 獲取Text組件里text內(nèi)容的長(zhǎng)度操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04
C#?wpf實(shí)現(xiàn)任意控件更多調(diào)整大小功能
這篇文章主要為大家詳細(xì)介紹了C#?wpf實(shí)現(xiàn)任意控件更多調(diào)整大小功能的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01

