Example #1
0
        internal static async Task <string> GetUniqueFileNameFromURLAsync(WebView webview)
        {
            var url = await JavascriptInterop.ExecuteJavascriptCodeAsync(webview, "document.location.href");

            var fileName = HtmlFileUtils.GetFileNameFromUri(url);

            return(fileName);
        }
Example #2
0
        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);
                }
            }
        }