1
1
using System ;
2
2
using System . Threading . Tasks ;
3
- using Newtonsoft . Json ;
4
3
5
4
namespace CefSharp . Example . DevTools
6
5
{
@@ -15,42 +14,14 @@ public static class DevToolsExtensions
15
14
/// <returns>png encoded image as byte[]</returns>
16
15
public static async Task < byte [ ] > CaptureScreenShotAsPng ( this IWebBrowser chromiumWebBrowser )
17
16
{
18
- //if (!browser.HasDocument)
19
- //{
20
- // throw new System.Exception("Page hasn't loaded");
21
- //}
22
-
23
- var browser = chromiumWebBrowser . GetBrowser ( ) ;
24
-
25
- if ( browser == null || browser . IsDisposed )
26
- {
27
- throw new Exception ( "browser is Null or Disposed" ) ;
28
- }
29
-
30
- //var param = new Dictionary<string, object>
31
- //{
32
- // { "format", "png" },
33
- //}
34
-
35
17
//Make sure to dispose of our observer registration when done
36
- using ( var devToolsClient = browser . GetDevToolsClient ( ) )
18
+ //If you need to make multiple calls then reuse the devtools client
19
+ //and Dispose when done.
20
+ using ( var devToolsClient = chromiumWebBrowser . GetDevToolsClient ( ) )
37
21
{
38
- const string methodName = "Page.captureScreenshot" ;
39
-
40
- var result = await devToolsClient . ExecuteDevToolsMethodAsync ( methodName ) ;
41
-
42
- dynamic response = JsonConvert . DeserializeObject < dynamic > ( result . ResponseAsJsonString ) ;
43
-
44
- //Success
45
- if ( result . Success )
46
- {
47
- return Convert . FromBase64String ( ( string ) response . data ) ;
48
- }
49
-
50
- var code = ( string ) response . code ;
51
- var message = ( string ) response . message ;
22
+ var result = await devToolsClient . Page . CaptureScreenshotAsync ( ) ;
52
23
53
- throw new Exception ( code + ":" + message ) ;
24
+ return result . Data ;
54
25
}
55
26
}
56
27
}
0 commit comments