cefsharp 模拟点击 批量重置数据库的数据
需求:获取数据库中的所有数据,然后触发页面逻辑重新保存。
-
加载数据库中的所有数据
-
循环加载数据
-
页面加载成功后点击触发保存
-
切换下一条数据
using CefSharp;
using CefSharp.Handler;
using CefSharp.Wpf;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
namespace SpiderTool
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public static bool CanSave = false;
List<Service> services;
int index = 0;
public MainWindow()
{
// CachePath需要为绝对路径
var settings = new CefSettings
{
CachePath = $"{AppDomain.CurrentDomain.BaseDirectory}CEFCaches"
};
Cef.Initialize(settings);
LoadService();
InitializeComponent();
var handler = new CefRequestHandlerc();
browser.RequestHandler = handler;
//browser.DialogHandler = new DialogHandler(@"C:\Users\ives\Desktop\share.jpg");
//browser.RequestHandler = new CEFRequestHandler();
//browser.
//browser.DownloadHandler = new CEFDownloadHandle();
Task.Run(() =>
{
while (true)
{
if (!CanSave)
{
Thread.Sleep(1000);
continue;
}
ReSave();
Thread.Sleep(1000);
}
});
}
public void LoadService()
{
services = DBHelper.GetAllService();
}
private void ButtonStart_Click(object sender, RoutedEventArgs e)
{
var serviceItem = services[index];
LoadNext();
}
public void ReSave()
{
MainWindow.CanSave = false;
Thread.Sleep(2000);
Button_Click(null, null);
Thread.Sleep(4000);
if (index >= services.Count)
{
return;
}
LoadNext();
index++;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
browser.ExecuteScriptAsync("document.getElementsByClassName(\"editor-top-bar__button-group\")[3].click()");
MainWindow.CanSave = false;
}
private void btnDev_Click(object sender, RoutedEventArgs e)
{
browser.ShowDevTools();
}
public string LoadNext()
{
var service = services[index];
string systemID = "6909679ff9659f7f07b4c529";
string appID = service.AppId;// "6909679ff9659f7f07b4c52c";
string serviceID = service.Id;// "6936a449845eea8ca6e0a8dd";
var result = $"http://192.168.0.184:6122/ServiceEdit?systemId={systemID}&appId={appID}&pageId={serviceID}&backendAppId={appID}";
browser.LoadUrl(result);
index++;
return result;
}
private void browser_Initialized(object sender, EventArgs e)
{
}
}
public class CefRequestHandlerc : RequestHandler
{
protected override IResourceRequestHandler GetResourceRequestHandler(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame,
IRequest request, bool isNavigation, bool isDownload, string requestInitiator, ref bool disableDefaultHandling)
{
// 一个请求用一个CefResourceRequestHandler
return new CefResourceRequestHandler();
}
}
public class CefResourceRequestHandler : ResourceRequestHandler
{
protected override void OnResourceLoadComplete(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, IResponse response, UrlRequestStatus status, long receivedContentLength)
{
base.OnResourceLoadComplete(chromiumWebBrowser, browser, frame, request, response, status, receivedContentLength);
if (request.Url.Contains("api/NC/ServiceRelease/Detail?"))
{
MainWindow.CanSave = true;
}
}
}
}
留待后查,同时方便他人
联系我:renhanlinbsl@163.com
联系我:renhanlinbsl@163.com

浙公网安备 33010602011771号