Пример #1
0
        /// <summary>
        /// 异步截图
        /// </summary>
        /// <typeparam name="T1"></typeparam>
        /// <typeparam name="T2"></typeparam>
        /// <param name="url"></param>
        /// <param name="savePath"></param>
        /// <param name="isTagName"></param>
        /// <param name="action"></param>
        /// <param name="par1"></param>
        /// <param name="par2"></param>
        /// <param name="width"></param>
        /// <param name="height"></param>
        /// <returns></returns>
        public static async Task ScreenshotAsync <T1, T2>(string url, string savePath, string isTagName, Action <T1, T2> action, T1 par1, T2 par2, int width = 1000, int height = 1000)
        {
            try
            {
                await _mutex.WaitAsync();

                if (_browser == null)
                {
                    await InItBrowser();
                }
                using Page page = await _browser.NewPageAsync();

                page.Load += async(sender, e) =>
                {
                    try
                    {
                        var _page = (Page)sender;
                        if (!string.IsNullOrEmpty(isTagName))
                        {
                            var tag = await page.QuerySelectorAsync(isTagName);

                            if (tag != null)
                            {
                                await page.ScreenshotAsync(savePath, new ScreenshotOptions()
                                {
                                    Type = ScreenshotType.Png
                                });

                                action?.Invoke(par1, par2);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        NLogHelp.ErrorLog("截图----Load出错:", ex);
                    }
                };
                await page.SetViewportAsync(new ViewPortOptions
                {
                    Width  = width,
                    Height = height
                });

                await page.GoToAsync(url);
            }
            catch (Exception ex)
            {
                NLogHelp.ErrorLog("截图----出错:", ex);
                GC.Collect();
                throw ex;
            }
            finally
            {
                _mutex.Release();
                GC.Collect();
            }
        }
Пример #2
0
        /// <summary>
        /// 异步截图
        /// </summary>
        /// <typeparam name="T1"></typeparam>
        /// <typeparam name="T2"></typeparam>
        /// <typeparam name="T3"></typeparam>
        /// <param name="url"></param>
        /// <param name="savePath"></param>
        /// <param name="isTagName"></param>
        /// <param name="action"></param>
        /// <param name="par1"></param>
        /// <param name="par2"></param>
        /// <param name="par3"></param>
        /// <param name="width"></param>
        /// <param name="height"></param>
        /// <returns></returns>
        public static async Task ScreenshotAsync <T1, T2, T3>(string url, string savePath, string isTagName, Action <T1, T2, T3> action, T1 par1, T2 par2, T3 par3, int width = 1080, int height = 1920)
        {
            await _mutex.WaitAsync();

            if (_browser == null)
            {
                await InItBrowser();
            }
            try
            {
                await Task.Run(async() =>
                {
                    using Page page = await _browser.NewPageAsync();
                    await page.SetViewportAsync(new ViewPortOptions
                    {
                        Width  = width,
                        Height = height
                    });
                    WaitUntilNavigation[] wn = new WaitUntilNavigation[50];
                    wn[0] = WaitUntilNavigation.DOMContentLoaded;
                    wn[1] = WaitUntilNavigation.Load;
                    await page.GoToAsync(url, new NavigationOptions()
                    {
                        WaitUntil = wn
                    });
                    try
                    {
                        //await page.PdfAsync(savePath);
                        await page.ScreenshotAsync(savePath, new ScreenshotOptions()
                        {
                            Type = ScreenshotType.Png
                        });
                        action?.Invoke(par1, par2, par3);
                    }
                    catch (Exception ex)
                    {
                        NLogHelp.ErrorLog("截图出错", ex);
                    }
                });
            }
            catch (Exception ex)
            {
                GC.Collect();
                NLogHelp.ErrorLog("截图----出错:", ex);
                throw ex;
            }
            finally
            {
                _mutex.Release();
                GC.Collect();
            }
        }
Пример #3
0
        /// <summary>
        /// 异步截图
        /// </summary>
        /// <typeparam name="T1"></typeparam>
        /// <typeparam name="T2"></typeparam>
        /// <typeparam name="T3"></typeparam>
        /// <typeparam name="T4"></typeparam>
        /// <param name="url"></param>
        /// <param name="savePath"></param>
        /// <param name="isTagName"></param>
        /// <param name="action"></param>
        /// <param name="par1"></param>
        /// <param name="par2"></param>
        /// <param name="par3"></param>
        /// <param name="par4"></param>
        /// <param name="width"></param>
        /// <param name="height"></param>
        /// <returns></returns>
        public static async Task ScreenshotAsync <T1, T2, T3, T4>(string url, string savePath, string isTagName, Action <T1, T2, T3, T4> action, T1 par1, T2 par2, T3 par3, T4 par4, int width = 1000, int height = 1000)
        {
            NLogHelp.InfoLog(url + "截图进来时间----:" + par4 + "  -----------" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
            await _mutex.WaitAsync();

            if (_browser == null)
            {
                await InItBrowser();
            }
            try
            {
                //Action<T4> action1 = async (time) =>
                //{
                //    using Page page = await _browser.NewPageAsync();
                //    await page.SetViewportAsync(new ViewPortOptions
                //    {
                //        Width = width,
                //        Height = height
                //    });
                //    WaitUntilNavigation[] wn = new WaitUntilNavigation[50];
                //    wn[0] = WaitUntilNavigation.DOMContentLoaded;
                //    wn[1] = WaitUntilNavigation.Load;
                //    await page.GoToAsync(url, new NavigationOptions() { WaitUntil = wn });
                //    try
                //    {
                //        //await page.PdfAsync(savePath);
                //        NLogHelp.InfoLog(url + "截图开始时间----:" + time + "  -----------" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                //        await page.ScreenshotAsync(savePath, new ScreenshotOptions() { Type = ScreenshotType.Png });
                //        NLogHelp.InfoLog(url + "截图结束时间----:" + time + "  -----------" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                //        action?.Invoke(par1, par2, par3, time);
                //    }
                //    catch (Exception ex)
                //    {
                //        NLogHelp.ErrorLog("截图出错", ex);
                //    }

                //};
                //action1(par4);
                await Task.Run(async() =>
                {
                    T4 time         = par4;
                    using Page page = await _browser.NewPageAsync();
                    await page.SetViewportAsync(new ViewPortOptions
                    {
                        Width  = width,
                        Height = height
                    });
                    WaitUntilNavigation[] wn = new WaitUntilNavigation[50];
                    wn[0] = WaitUntilNavigation.DOMContentLoaded;
                    wn[1] = WaitUntilNavigation.Load;
                    await page.GoToAsync(url, new NavigationOptions()
                    {
                        WaitUntil = wn
                    });
                    try
                    {
                        //await page.PdfAsync(savePath);
                        NLogHelp.InfoLog(url + "截图开始时间----:" + time + "  -----------" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                        await page.ScreenshotAsync(savePath, new ScreenshotOptions()
                        {
                            Type = ScreenshotType.Png
                        });
                        NLogHelp.InfoLog(url + "截图结束时间----:" + time + "  -----------" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                        action?.Invoke(par1, par2, par3, time);
                    }
                    catch (Exception ex)
                    {
                        NLogHelp.ErrorLog("截图出错", ex);
                    }
                });
            }
            catch (Exception ex)
            {
                GC.Collect();
                NLogHelp.ErrorLog("截图----出错:", ex);
                throw ex;
            }
            finally
            {
                _mutex.Release();
                GC.Collect();
            }
        }