可直接運行的 Playwright C# 自動化模板

目錄

目錄結構

1. appsettings.json(賬號、URL、路徑配置)

2. Program.cs(啟動入口)

3. SchedulerConfig.cs(定時調度)

4. SocialSecurityTask.cs(自動報社保任務)

5. QuerySocialDataTask.cs(查詢導出任務)

6. PublishCsdnTask.cs(發布 CSDN 文章)

7. 后續可加功能


可直接運行的 Playwright C# 自動化模板,里面包含:

  • 報社保任務(模擬登錄 → 上傳 Excel)
  • 查詢導出任務(模擬登錄 → 查詢 → 下載 Excel)
  • 發布文章任務(自動登錄 → 填寫標題與內容 → 發布)
  • Quartz.NET 定時調度(可配置執行周期)
  • 配置文件管理(賬號、密碼、URL、文件路徑)
  • 日志記錄 & 截圖保存
  • 驗證碼識別預留接口(可以后續接 Python OCR)

目錄結構

AutoTasks/├── AutoTasks.csproj├── appsettings.json         // 配置賬號密碼├── Program.cs               // 啟動調度器├── SchedulerConfig.cs       // Quartz 調度配置├── Tasks/│    ├── SocialSecurityTask.cs // 報社保任務│    ├── QuerySocialDataTask.cs // 查詢導出任務│    ├── PublishCsdnTask.cs    // 發布任務├── Services/│    ├── OcrService.cs         // 驗證碼識別接口(可接Python)│    ├── ExcelService.cs       // Excel處理│    ├── AiContentService.cs   // AI生成文章└── Logs/└── ...                   // 自動化運行截圖 & 日志

1. appsettings.json(賬號、URL、路徑配置)

{"SocialSecurity": {"LoginUrl": "https://example.com/social/login","Username": "your_username","Password": "your_password","UploadFilePath": "C:\\報表\\社保.xls"},"Csdn": {"LoginUrl": "https://**.net/creation/editor","Username": "your_username","Password": "your_password"},"Paths": {"DownloadFolder": "C:\\數據導出","ScreenshotFolder": "Logs"}
}

2. Program.cs(啟動入口)

using System.Threading.Tasks;class Program
{public static async Task Main(){await SchedulerConfig.Start();Console.WriteLine("任務調度已啟動,按 Ctrl+C 停止。");await Task.Delay(-1);}
}

3. SchedulerConfig.cs(定時調度)

using Quartz;
using Quartz.Impl;public class SchedulerConfig
{public static async Task Start(){StdSchedulerFactory factory = new StdSchedulerFactory();var scheduler = await factory.GetScheduler();await scheduler.Start();// 每月5號 10:00 報社保var socialJob = JobBuilder.Create<SocialSecurityTask>().Build();var socialTrigger = TriggerBuilder.Create().WithCronSchedule("0 0 10 5 * ?").Build();await scheduler.ScheduleJob(socialJob, socialTrigger);// 每周一 09:00 查詢社保數據var queryJob = JobBuilder.Create<QuerySocialDataTask>().Build();var queryTrigger = TriggerBuilder.Create().WithCronSchedule("0 0 9 ? * MON").Build();await scheduler.ScheduleJob(queryJob, queryTrigger);// 每周二 09:30 發布文章var csdnJob = JobBuilder.Create<PublishCsdnTask>().Build();var csdnTrigger = TriggerBuilder.Create().WithCronSchedule("0 30 9 ? * TUE").Build();await scheduler.ScheduleJob(csdnJob, csdnTrigger);}
}

4. SocialSecurityTask.cs(自動報社保任務)

using Quartz;
using Microsoft.Playwright;
using Microsoft.Extensions.Configuration;public class SocialSecurityTask : IJob
{public async Task Execute(IJobExecutionContext context){var config = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();var url = config["SocialSecurity:LoginUrl"];var username = config["SocialSecurity:Username"];var password = config["SocialSecurity:Password"];var filePath = config["SocialSecurity:UploadFilePath"];var screenshotFolder = config["Paths:ScreenshotFolder"];using var playwright = await Playwright.CreateAsync();var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions { Headless = false });var page = await browser.NewPageAsync();try{await page.GotoAsync(url);await page.FillAsync("#username", username);await page.FillAsync("#password", password);// TODO: 驗證碼處理 - 調用 OcrService// var captchaText = await OcrService.RecognizeAsync(page);// await page.FillAsync("#captcha", captchaText);await page.ClickAsync("#loginBtn");await page.SetInputFilesAsync("input[type='file']", filePath);await page.ClickAsync("#submitBtn");await page.ScreenshotAsync(new PageScreenshotOptions{Path = $"{screenshotFolder}\\SocialSecurity_{DateTime.Now:yyyyMMddHHmmss}.png"});}catch (Exception ex){Console.WriteLine($"報社保任務失敗: {ex.Message}");}finally{await browser.CloseAsync();}}
}

5. QuerySocialDataTask.cs(查詢導出任務)

using Quartz;
using Microsoft.Playwright;public class QuerySocialDataTask : IJob
{public async Task Execute(IJobExecutionContext context){Console.WriteLine("執行社保數據查詢并導出...");// 和 SocialSecurityTask 類似,登錄后執行查詢與下載}
}

6. PublishCsdnTask.cs(發布 CSDN 文章)

using Quartz;
using Microsoft.Playwright;public class PublishCsdnTask : IJob
{public async Task Execute(IJobExecutionContext context){Console.WriteLine("執行發布文章任務...");// 登錄,填寫標題和內容,點擊發布}
}

7. 后續可加功能

  • 驗證碼自動識別:OcrService 接入 Python 腳本或打碼平臺
  • Excel 數據處理:ExcelService 用 EPPlus 讀取、寫入 Excel
  • 文章 AI 生成:AiContentService 調用 GPT API 生成內容
  • 任務失敗重試:Quartz 支持失敗任務重試策略
  • 打包成 EXEdotnet publish -r win-x64

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/918689.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/918689.shtml
英文地址,請注明出處:http://en.pswp.cn/news/918689.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

云平臺監控-云原生環境Prometheus企業級監控實戰

目錄 一、基于 Kubernetes 的 Prometheus 監控方案概述 1. 核心組件及功能 2. 監控流程詳解 3. 關鍵監控指標說明 二、Prometheus 與相關組件部署 1. 克隆項目代碼 2. 安裝 Prometheus Operator 3. 安裝 Prometheus Stack 4. 查看容器運行狀態 三、ServiceMonitor 配…

GPT-5 有點不太順

GPT-5 有點不太順 OpenAI 的新模型 GPT-5 盼了很久,結果一上線就問題不少。 發布會剛過,CEO 山姆?奧特曼就說,要給部分用戶恢復 GPT-4o 這些老模型的使用權限,還承認 GPT-5 上線 “比預想的坎坷”。 簡單題都做錯了 不少用戶發現,GPT-5 連一些簡單問題都答不對,比之前…

《卷積神經網絡(CNN):解鎖視覺與多模態任務的深度學習核心》

1.概述卷積神經網絡&#xff08;CNN&#xff09;是深度學習在計算機視覺領域的重要突破&#xff0c;專為處理網格狀數據&#xff08;如圖像&#xff09;設計&#xff0c;后也擴展到自然語言處理等領域。它解決了全連接網絡處理大圖像時計算代價高、特征保留差的問題&#xff0c…

React Native + Expo搭建APP項目+安卓模擬器

Expo 嘗試一下就好&#xff0c;畢竟參考代碼太少&#xff0c;相當于閉關造輪子&#xff0c;不建議。 一、需要的工具 1. node.js&#xff0c;推薦使用&#xff08;TLS版本&#xff09;&#xff0c;版本不是太低就行&#xff0c;測試用的v20.12.2的Node 2. 開發工具 VS CODE或…

第六十五章:AI的“精良食材”:圖像標注、視頻幀抽幀與字幕提取技巧

ai 數據處理前言&#xff1a;從“原始食材”到“AI盛宴”第一章&#xff1a;圖像標注&#xff1a;為AI“指點江山”1.1 什么是圖像標注&#xff1f;—— AI的“視覺標簽”1.2 分類任務&#xff1a;圖像的“身份識別”1.3 目標檢測&#xff1a;圖像的“區域識別”與“邊界框”1.…

2025 開源語音合成模型全景解析:從工業級性能到創新架構的技術圖譜

一、引言&#xff1a;開源浪潮下的語音合成技術躍遷 語音合成&#xff08;TTS&#xff09;作為人工智能領域的核心技術&#xff0c;近年來在開源社區的推動下取得了突破性進展。從早期的基于規則的拼接合成&#xff0c;到深度學習驅動的端到端模型&#xff0c;再到當前與大語言…

前端懶加載技術全面解析

懶加載(Lazy Loading)是一種優化前端性能的重要技術,核心思想是延遲加載非關鍵資源,只在需要時加載它們。 一、懶加載的基本原理 懶加載的核心思想是通過以下方式優化性能: 減少初始加載實踐: 只加載首屏所需資源 節省帶寬和內存: 避免加載用戶可能不會查看的內容 提高…

B3DM,OSGB,PLY,OBJ,S3MB,I3S這幾種格式有什么區別

B3DM、OSGB、PLY、OBJ、S3MB、I3S 都是三維模型/地理空間數據的文件格式&#xff0c;但它們的用途、結構和適用場景差別很大。1. B3DM&#xff08;Batched 3D Model&#xff09;來源/用途&#xff1a;屬于 Cesium 3D Tiles 規范&#xff0c;用于在 Cesium、Mapbox 這種 WebGIS …

Matlab(4)

一、Basic plotting1.plot&#xff08;&#xff09;plot(x,y) &#xff1a;x圖片中點的橫坐標&#xff0c;y圖片中點的縱坐標plot(y) &#xff1a;y圖片中點的縱坐標&#xff0c;x圖片中點的橫坐標默認為1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5........plot(co…

Pycharm選好的env有包,但是IDE環境顯示無包

一、異常現象 Pycharm選好的env&#xff08;yolov7&#xff09;&#xff1a; 有Numpy這個包&#xff1a; IDE環境愣是報沒有&#xff1a; 二、嘗試解決 2.1 重新啟動pycharm 重新打開.py文件&#xff1a; 還是不行&#xff1a; 看看好使的windows上的pycharm參數&#xff1a…

深入理解 Linux 下的 GDB 調試工具

引言 在軟件開發中&#xff0c;調試是一個不可避免且至關重要的環節。無論是簡單的邏輯錯誤&#xff0c;還是復雜的內存泄漏問題&#xff0c;調試工具都能幫助我們快速定位并修復問題。而在 Linux 系統中&#xff0c;GDB&#xff08;GNU 調試器&#xff09;是最強大、最常用的…

讓齒輪與斑馬線共舞:汽車文化驛站及安全教育基地的展陳實踐

當汽車文化驛站及安全教育基地的展陳項目圖紙在繪圖儀上初現輪廓時&#xff0c;我們就明確了一個核心命題&#xff1a;如何讓 “速度與激情” 的汽車文化&#xff0c;與 “規則與敬畏” 的安全教育在同一空間里和諧共生&#xff0c;而非簡單拼接。這不是兩個獨立展區的物理疊加…

Flask + Vue.js 物聯網數字大屏實現方案

我將為您創建一個精美的物聯網數字大屏,使用Flask作為后端提供數據,Vue.js作為前端展示,全部集成在單個HTML文件中實現。 設計思路 整體布局: 深色主題背景提高數據可視性 頂部標題欄顯示系統名稱和時間 中央區域分為多個數據卡片 底部顯示系統狀態信息 核心功能: 實…

Excel怎么篩選重復項?【圖文詳解】查找/刪除重復項?查找重復項公式?如何去重?

一、問題背景 在使用 Excel 整理數據時&#xff0c;我們經常會遇到重復內容。這些重復項不僅會讓表格顯得雜亂&#xff0c;還可能影響數據統計的準確性。比如學生成績表中重復的分數、員工信息表中重復的姓名等&#xff0c;都需要及時篩選出來處理。其實&#xff0c;篩選重復項…

模板打印技術——自動識別office類型 打印模板:為政務土地確權定制的替換利器—仙盟創夢IDE

代碼for (int i 0; i < tmpcount; i){string tmptable dt.Rows[i]["tmpname"].ToString().Trim();string doctype dt.Rows[i]["doctype"].ToString().Trim();if (doctype "doc"){doc_pagecount cyberwin_replacr_tmpes_files(dgvr, tmpt…

MongoDB分析insert源代碼

mongo插入單條文檔insert()> db.user.insert({ ... "name": "alice", ... "age": 28 ... }); WriteResult({ "nInserted" : 1 }) >MongoDB插入文檔代碼調用鏈如下&#xff1a;mongo/db/commands/write_commands/write_c…

react路由跳轉與路由懶加載等(對照vue來說一說不同之處)

前言&#xff1a;react路由跳轉與路由懶加載等路由懶加載&#xff1a;使用 loadable/component 插件來實現安裝&#xff1a;npm i loadable/component具體使用&#xff1a;1、引入loadable/component2、正常封裝的地方const HomeLoadable(()>import(./views/Home.jsx));也可…

Nginx 架構和安裝

二、.Nginx 架構和安裝 2.1 Nginx 概述 2.1.1 Nginx 介紹 Nginx&#xff1a;engine X &#xff0c;2002年開發&#xff0c;分為社區版和商業版(nginx plus ) 2019年3月11日 F5 Networks 6.7億美元的價格收購 Nginx是免費的、開源的、高性能的HTTP和反向代理服務器、郵件代理服務…

HarmonyOS NDK的JavaScript/TypeScript與C++交互機制

HarmonyOS NDK的JavaScript/TypeScript與C交互機制 細解釋這個調用流程&#xff1a; 整體架構流程 ArkTS/JavaScript ←→ .d.ts (類型定義) ←→ NAPI ←→ .cpp (C實現)文件結構和作用 項目結構示例&#xff1a; MyHarmonyApp/ ├── entry/src/main/ets/ # ArkTS應…

[激光原理與應用-226]:機械 - 如何學習3D圖設計

學習機械領域的3D圖設計需要系統掌握軟件操作、設計思維、工程規范和實戰經驗。以下是分階段的學習路徑和實用建議&#xff0c;幫助你高效入門并提升技能&#xff1a;一、基礎準備階段1. 明確學習目標方向選擇&#xff1a;根據興趣確定細分領域&#xff08;如機械零件設計、鈑金…