|
@@ -1,11 +1,4 @@
|
|
|
using PuppeteerSharp;
|
|
|
-using System;
|
|
|
-using System.Collections.Generic;
|
|
|
-using System.ComponentModel;
|
|
|
-using System.Linq;
|
|
|
-using System.Text;
|
|
|
-using System.Threading.Tasks;
|
|
|
-using System.Xml.Linq;
|
|
|
|
|
|
namespace StationProbe
|
|
|
{
|
|
@@ -38,11 +31,45 @@ namespace StationProbe
|
|
|
|
|
|
internal abstract class ProbeTask
|
|
|
{
|
|
|
+ private static string _debugFolder = string.Empty;
|
|
|
protected readonly Database _db;
|
|
|
+
|
|
|
+ protected ScreenshotOptions _snapshotOpts = new ScreenshotOptions() {Type = ScreenshotType.Jpeg };
|
|
|
+ public static bool DebugMode { get; set; }
|
|
|
+
|
|
|
+
|
|
|
public ProbeTask(Database db)
|
|
|
{
|
|
|
_db = db;
|
|
|
}
|
|
|
+
|
|
|
+ public static void InitDebugFolder()
|
|
|
+ {
|
|
|
+ var drives = DriveInfo.GetDrives();
|
|
|
+ var largestDriver = drives.OrderByDescending(x => x.TotalFreeSpace).First();
|
|
|
+ var debugFolder = largestDriver.Name + "debug";
|
|
|
+ if (!Directory.Exists(debugFolder))
|
|
|
+ {
|
|
|
+ Directory.CreateDirectory(debugFolder);
|
|
|
+ }
|
|
|
+ var i = 1;
|
|
|
+ while (Directory.Exists(Path.Combine(debugFolder, i.ToString("D6"))))
|
|
|
+ {
|
|
|
+ i++;
|
|
|
+ }
|
|
|
+ _debugFolder = Path.Combine(debugFolder, i.ToString("D6"));
|
|
|
+ Directory.CreateDirectory(_debugFolder);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void SaveDebugSnapshot(string name, byte[] imageData)
|
|
|
+ {
|
|
|
+ if (Directory.Exists(_debugFolder))
|
|
|
+ {
|
|
|
+ var file = Path.Combine(_debugFolder, name);
|
|
|
+ File.WriteAllBytes(file, imageData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public abstract Task<ElementCollection> ExecuteAsync(ElementCollection inputs);
|
|
|
}
|
|
|
|
|
@@ -57,24 +84,55 @@ namespace StationProbe
|
|
|
|
|
|
public override async Task<ElementCollection> ExecuteAsync(ElementCollection inputs)
|
|
|
{
|
|
|
- var input = inputs[ElementType.Page].As<IPage>();
|
|
|
- if (input != null)
|
|
|
+ var page = inputs[ElementType.Page].As<IPage>();
|
|
|
+ if (page != null)
|
|
|
{
|
|
|
- await input.GoToAsync(_loginUrl);
|
|
|
+ await page.GoToAsync(_loginUrl);
|
|
|
+ await page.WaitForNetworkIdleAsync();
|
|
|
+
|
|
|
+ if(DebugMode)
|
|
|
+ {
|
|
|
+ var imageData = await page.ScreenshotDataAsync(_snapshotOpts);
|
|
|
+ var fileName = "100000000.jpg";
|
|
|
+ SaveDebugSnapshot(fileName, imageData);
|
|
|
+ }
|
|
|
+
|
|
|
//username
|
|
|
- await input.WaitForSelectorAsync("input[_bl_13]");
|
|
|
- await input.FocusAsync("input[_bl_13]");
|
|
|
- await input.Keyboard.TypeAsync("justin.xing");
|
|
|
+ await page.WaitForSelectorAsync("input[_bl_13]");
|
|
|
+ await page.FocusAsync("input[_bl_13]");
|
|
|
+ await page.Keyboard.TypeAsync("justin.xing");
|
|
|
+
|
|
|
+ if (DebugMode)
|
|
|
+ {
|
|
|
+ var imageData = await page.ScreenshotDataAsync(_snapshotOpts);
|
|
|
+ var fileName = "200000000.jpg";
|
|
|
+ SaveDebugSnapshot(fileName, imageData);
|
|
|
+ }
|
|
|
+
|
|
|
//password
|
|
|
- await input.WaitForSelectorAsync("input[_bl_14]");
|
|
|
- await input.FocusAsync("input[_bl_14]");
|
|
|
- await input.Keyboard.TypeAsync("123456");
|
|
|
+ await page.WaitForSelectorAsync("input[_bl_14]");
|
|
|
+ await page.FocusAsync("input[_bl_14]");
|
|
|
+ await page.Keyboard.TypeAsync("123456");
|
|
|
+
|
|
|
+ if (DebugMode)
|
|
|
+ {
|
|
|
+ var imageData = await page.ScreenshotDataAsync(_snapshotOpts);
|
|
|
+ var fileName = "300000000.jpg";
|
|
|
+ SaveDebugSnapshot(fileName, imageData);
|
|
|
+ }
|
|
|
+
|
|
|
//login
|
|
|
- var button = await input.WaitForSelectorAsync("button[_bl_15]");
|
|
|
+ var button = await page.WaitForSelectorAsync("button[_bl_15]");
|
|
|
await button.ClickAsync();
|
|
|
+ await page.WaitForNavigationAsync();
|
|
|
+ await page.WaitForNetworkIdleAsync();
|
|
|
|
|
|
- await input.WaitForNavigationAsync();
|
|
|
- await input.WaitForNetworkIdleAsync();
|
|
|
+ if (DebugMode)
|
|
|
+ {
|
|
|
+ var imageData = await page.ScreenshotDataAsync(_snapshotOpts);
|
|
|
+ var fileName = "400000000.jpg";
|
|
|
+ SaveDebugSnapshot(fileName, imageData);
|
|
|
+ }
|
|
|
}
|
|
|
return inputs;
|
|
|
}
|
|
@@ -89,11 +147,18 @@ namespace StationProbe
|
|
|
public override async Task<ElementCollection> ExecuteAsync(ElementCollection inputs)
|
|
|
{
|
|
|
Logger.WriteLine("Finding menu...");
|
|
|
- var input = inputs[ElementType.Page].As<IPage>();
|
|
|
- if (input != null)
|
|
|
+ var page = inputs[ElementType.Page].As<IPage>();
|
|
|
+ if (page != null)
|
|
|
{
|
|
|
- var frame = await input.WaitForFrameAsync("");
|
|
|
+ var frame = await page.WaitForFrameAsync("");
|
|
|
inputs.AddObject(ElementType.Frame, frame);
|
|
|
+
|
|
|
+ if (DebugMode)
|
|
|
+ {
|
|
|
+ var imageData = await page.ScreenshotDataAsync(_snapshotOpts);
|
|
|
+ var fileName = "500000000.jpg";
|
|
|
+ SaveDebugSnapshot(fileName, imageData);
|
|
|
+ }
|
|
|
}
|
|
|
return inputs;
|
|
|
}
|
|
@@ -120,9 +185,40 @@ namespace StationProbe
|
|
|
var frame = inputs[ElementType.Frame].As<IFrame>();
|
|
|
if(page!= null && frame != null)
|
|
|
{
|
|
|
+ //show filter dialog
|
|
|
+ if (DebugMode)
|
|
|
+ {
|
|
|
+ var imageData = await page.ScreenshotDataAsync(_snapshotOpts);
|
|
|
+ var fileName = "600000000.jpg";
|
|
|
+ SaveDebugSnapshot(fileName, imageData);
|
|
|
+ }
|
|
|
+
|
|
|
+ //input start
|
|
|
+ if (DebugMode)
|
|
|
+ {
|
|
|
+ var imageData = await page.ScreenshotDataAsync(_snapshotOpts);
|
|
|
+ var fileName = "700000000.jpg";
|
|
|
+ SaveDebugSnapshot(fileName, imageData);
|
|
|
+ }
|
|
|
+
|
|
|
+ //input end
|
|
|
+ if (DebugMode)
|
|
|
+ {
|
|
|
+ var imageData = await page.ScreenshotDataAsync(_snapshotOpts);
|
|
|
+ var fileName = "800000000.jpg";
|
|
|
+ SaveDebugSnapshot(fileName, imageData);
|
|
|
+ }
|
|
|
+
|
|
|
await frame.WaitForSelectorAsync("input[_bl_13]");
|
|
|
await frame.FocusAsync("input[_bl_13]");
|
|
|
await page.Keyboard.TypeAsync("justin.xing");
|
|
|
+
|
|
|
+ if (DebugMode)
|
|
|
+ {
|
|
|
+ var imageData = await page.ScreenshotDataAsync(_snapshotOpts);
|
|
|
+ var fileName = "900000000.jpg";
|
|
|
+ SaveDebugSnapshot(fileName, imageData);
|
|
|
+ }
|
|
|
}
|
|
|
return inputs;
|
|
|
}
|
|
@@ -138,7 +234,17 @@ namespace StationProbe
|
|
|
|
|
|
public override async Task<ElementCollection> ExecuteAsync(ElementCollection inputs)
|
|
|
{
|
|
|
-
|
|
|
+ var page = inputs[ElementType.Page].As<IPage>();
|
|
|
+ var frame = inputs[ElementType.Frame].As<IFrame>();
|
|
|
+ if (page != null && frame != null)
|
|
|
+ {
|
|
|
+ if (DebugMode)
|
|
|
+ {
|
|
|
+ var imageData = await page.ScreenshotDataAsync(_snapshotOpts);
|
|
|
+ var fileName = "9" + _page.ToString("D5") +"000.jpg";
|
|
|
+ SaveDebugSnapshot(fileName, imageData);
|
|
|
+ }
|
|
|
+ }
|
|
|
return inputs;
|
|
|
}
|
|
|
}
|
|
@@ -163,9 +269,17 @@ namespace StationProbe
|
|
|
var page = inputs[ElementType.Page].As<IPage>();
|
|
|
var frame = inputs[ElementType.Frame].As<IFrame>();
|
|
|
if (page != null && frame != null)
|
|
|
- {
|
|
|
+ { //Enter exam
|
|
|
+
|
|
|
+ if (DebugMode)
|
|
|
+ {
|
|
|
+ var imageData = await page.ScreenshotDataAsync(_snapshotOpts);
|
|
|
+ var fileName = "9" + _pageIndex.ToString("D5") + _examIndexInPage.ToString("D3") +".jpg";
|
|
|
+ SaveDebugSnapshot(fileName, imageData);
|
|
|
+ }
|
|
|
+
|
|
|
var exmaId = Guid.NewGuid().ToString("N");
|
|
|
- //Enter exam
|
|
|
+
|
|
|
//Get patient info
|
|
|
var patientName = "";
|
|
|
var patientSex = "";
|
|
@@ -210,6 +324,12 @@ namespace StationProbe
|
|
|
_db.AddExam(exam);
|
|
|
//Back to page.
|
|
|
await page.GoBackAsync();
|
|
|
+ if (DebugMode)
|
|
|
+ {
|
|
|
+ var imageData = await page.ScreenshotDataAsync(_snapshotOpts);
|
|
|
+ var fileName = "9" + _pageIndex.ToString("D5") + "999.jpg";
|
|
|
+ SaveDebugSnapshot(fileName, imageData);
|
|
|
+ }
|
|
|
}
|
|
|
return inputs;
|
|
|
}
|