internal static async Task <string> GetUniqueFileNameFromURLAsync(WebView webview) { var url = await JavascriptInterop.ExecuteJavascriptCodeAsync(webview, "document.location.href"); var fileName = HtmlFileUtils.GetFileNameFromUri(url); return(fileName); }
private async Task DoCaptureScreenshots() { // Get unique file name for the current URL var fileName = await JavascriptInterop.GetUniqueFileNameFromURLAsync(webview); fileName = counter.ToString("D5") + "_" + fileName; if (currentErrorStatus != WebErrorStatus.Unknown) { var errorString = Enum.GetName(typeof(WebErrorStatus), currentErrorStatus); var errorMessage = "Error navigating to " + currentURL + " => " + errorString; if (INTERACTIVE) { var md = new MessageDialog(errorMessage); await md.ShowAsync(); } else { FilesManager.WriteTextToFileAsync(fileName + "_error.log", errorMessage); } } else { // Get view and content dimensions var viewDimensions = ScreenCapture.GetViewDimensions(webview); var contentDimensions = await ScreenCapture.GetContentDimensionsAsync(webview); // Resize view to content size ScreenCapture.SetViewDimensions(webview, contentDimensions); // Capture a screenshot await ScreenCapture.CreateAndSaveScreenshotAsync(webview, capture, null, warmup : true); // necessary because sometimes screenshot alters layout await ScreenCapture.CreateAndSaveScreenshotAsync(webview, capture, fileName); try { // Capture a description of all chars/words/lines/blocks bounding boxes // Draw all these bounding boxes on the screen var pageElementsTree = await ScreenCapture.CreateAndSaveTextBoundingBoxes(webview, fileName); // Capture a new screenshot await ScreenCapture.CreateAndSaveScreenshotAsync(webview, captureBoxes, fileName, "boxes"); } catch (Exception e) { if (INTERACTIVE) { var md = new MessageDialog(e.Message); await md.ShowAsync(); } else { FilesManager.WriteTextToFileAsync(fileName + "_error.log", e.Message); } } if (INTERACTIVE) { // Reset view to its original size ScreenCapture.SetViewDimensions(webview, viewDimensions); } else { // Choose random width for next image viewDimensions.width = ScreenCapture.GetRandowWidth(); ScreenCapture.SetViewDimensions(webview, viewDimensions); } } }