How to use WaitForSelectorOptions class of PuppeteerSharp package

Best Puppeteer-sharp code snippet using PuppeteerSharp.WaitForSelectorOptions

WeiboFavScrape.cs

Source:WeiboFavScrape.cs Github

copy

Full Screen

...45                var url = "https://weibo.com";46                await page.GoToAsync(url);47                try48                {49                    await page.WaitForSelectorAsync(".WB_left_nav", new WaitForSelectorOptions50                    {51                        Visible = true, Timeout = 1500052                    });53                    Log.Logger.Information("User Login Success");54                }55                catch (WaitTaskTimeoutException)56                {57                    Log.Logger.Information("Try Login...");58                    await Login(page);59                }60                while (true)61                {62                    try63                    {64                        url = "https://weibo.com/fav?leftnav=1";65                        await page.GoToAsync(url);66                        Log.Logger.Information("Checking fav Weibo...");67                        await page.WaitForSelectorAsync(".WB_feed_like", new WaitForSelectorOptions {Visible = true});68                        var weibos = await page.QuerySelectorAllAsync(".WB_feed_like");69                        var weiboInfoList = new List<WeiboInfo>();70                        foreach (var element in weibos)71                        {72                            var mid = await element.GetAttributeAsync("mid", page);73                            var ninePicTrigger = await element.QuerySelectorAllAsync(".WB_pic.li_9");74                            if (ninePicTrigger.Any())75                            {76                                await ninePicTrigger[0].ClickAsync();77                                await page.WaitForSelectorAsync($"[mid='{mid}'] .WB_expand_media_box",78                                    new WaitForSelectorOptions {Visible = true});79                            }80                            var html = await page.EvaluateFunctionAsync<string>("(el) => el.innerHTML", element);81                            var urlElement =82                                await element.QuerySelectorAsync(".WB_func li:nth-child(2) a");83                            var imgBoxesElement =84                                await element.QuerySelectorAsync(".WB_media_a[action-data]");85                            weiboInfoList.Add(new WeiboInfo86                            {87                                Id = mid,88                                RawHtml = html,89                                Url = urlElement != null90                                    ? "https://weibo.com" + await urlElement.GetAttributeAsync("href", page)91                                    : "",92                                ImgUrls = (await Task.WhenAll(93                                    PulloutImgList(imgBoxesElement != null94                                            ? await imgBoxesElement.GetAttributeAsync("action-data", page)95                                            : "")96                                        .Select(async d => new Img97                                        {98                                            ImgUrl = $"https://wx1.sinaimg.cn/large/{d}",99                                            ImgPath = await DownloadImg($"https://wx1.sinaimg.cn/large/{d}")100                                        }))).ToList()101                            });102                        }103                        using (var db = new Database())104                        {105                            // ReSharper disable once AccessToDisposedClosure106                            weiboInfoList = weiboInfoList.Where(t => db.WeiboInfo.All(d => t.Id != d.Id)).ToList();107                            await db.WeiboInfo.AddRangeAsync(weiboInfoList);108                            await db.SaveChangesAsync();109                        }110                        File.Delete("screenshot.png");111                        await page.ScreenshotAsync("screenshot.png");112                        Log.Logger.Information($"Find {weiboInfoList.Count} new weibos");113                        if (weiboInfoList.Count > 0)114                            Log.Logger.Information("Passing weibos to telegram bot...");115                        foreach (var weiboInfo in weiboInfoList)116                            WeiboReceived?.Invoke(this, new WeiboEventArgs {WeiboInfo = weiboInfo});117                    }118                    catch (Exception e)119                    {120                        if (e is PuppeteerException)121                            //Log.Fatal(e, "Browser dead");122                            throw;123                        Log.Fatal(e, "Access Weibo failed");124                    }125                    await Task.Delay(TimeSpan.FromMinutes(1));126                }127            }128        }129        private IEnumerable<string> PulloutImgList(string html)130        {131            var listOnlyNinePic = ImgUrlRegex.Matches(html).Select(d => d.Value);132            var allPic = ImgUrlRegexNew.Match(html).Value.Split(',', StringSplitOptions.RemoveEmptyEntries)133                .Select(t => $"{t}.jpg");134            return listOnlyNinePic.Concat(allPic).Distinct();135        }136        private async Task Login(Page page)137        {138            await page.WaitForSelectorAsync("[name=username]", new WaitForSelectorOptions {Visible = true});139            var username = await page.QuerySelectorAsync("[name='username']");140            var password = await page.QuerySelectorAsync("[name='password']");141            var submitBtn = await page.QuerySelectorAsync("div[node-type='normal_form'] a[node-type='submitBtn']");142            await username.ClickAsync();143            await username.FocusAsync();144            // click three times to select all145            await username.ClickAsync(new ClickOptions {ClickCount = 3});146            await username.PressAsync("Backspace");147            await username.TypeAsync(Program.Config["Weibo:Username"]);148            await password.ClickAsync();149            await password.FocusAsync();150            // click three times to select all151            await password.ClickAsync(new ClickOptions {ClickCount = 3});152            await password.PressAsync("Backspace");153            await password.TypeAsync(Program.Config["Weibo:Password"]);154            await submitBtn.ClickAsync();155            while (true)156                try157                {158                    await page.WaitForSelectorAsync(".WB_left_nav", new WaitForSelectorOptions {Visible = true});159                    break;160                }161                catch (WaitTaskTimeoutException)162                {163                    if (await page.QuerySelectorAsync("#dmCheck") == null)164                    {165                        Code = "";166                        File.Delete("verify.png");167                        await page.ScreenshotAsync("verify.png");168                        Console.WriteLine("Please check verify.png for verify code");169                        using (var verifyImgStream = await page.ScreenshotStreamAsync())170                        {171                            VerifyRequested?.Invoke(this, new VerifyEventArgs {VerifyImg = verifyImgStream});172                        }...

Full Screen

Full Screen

Program.cs

Source:Program.cs Github

copy

Full Screen

...114                    WriteLineExit("Operation Timed Out");115                }116                // Check if download-tab exists117                try {118                    result = await page.WaitForSelectorAsync("div#download-tab", new WaitForSelectorOptions { Timeout = (int)TimeSpan.FromSeconds(1).TotalMilliseconds });119                    var inner = await result.GetPropertyAsync("innerHTML");120                    finalStr = inner.ToString();121                    break;122                } catch (Exception e) {123                    try {124                        // if it doesn't then check if download-result exists125                        result = await page.WaitForSelectorAsync("div#download-result", new WaitForSelectorOptions { Timeout = (int)TimeSpan.FromSeconds(1).TotalMilliseconds });126                        var inner = await result.GetPropertyAsync("innerHTML");127                        finalStr = inner.ToString();128                        // if finalStr is 'JSHandle:' then the page has not loaded yet129                        if (!finalStr.Equals("JSHandle:")) {130                            // download-result contains an error div if apk not found with provided settings131                            if (finalStr.Contains("<div class=\"error\"")) {132                                WriteLineExit($"Couldn't find APK");133                            } else {134                                break;135                            }136                        }137                    } catch (Exception f) { }138                }139            }...

Full Screen

Full Screen

Authorization.cs

Source:Authorization.cs Github

copy

Full Screen

...53                        await System.Threading.Tasks.Task.Delay(3000);54                        connectCount++;55                    }56                }57                WaitForSelectorOptions WaitForSelectorTimeout = new WaitForSelectorOptions { Timeout = DefaultTimeout };58                Log.Information($"DefaultTimeout: {p.DefaultTimeout}");59                Log.Information($"DefaultNavigationTimeout: {p.DefaultNavigationTimeout}");60                const string button = "body > app-root > n3-grid > app-login > div > div.notice > div > app-login-form > div > button";61                await p.WaitForSelectorAsync(button, WaitForSelectorTimeout);62                await System.Threading.Tasks.Task.Delay(10000);63                await p.ClickAsync(button);64                Log.Information("Первый клик {Button}: успешно!", "Войти с ЕСИА");65                Log.Information($"{timer.ElapsedMilliseconds}");66                timer.Restart();67                p = await GetPage(browser, "https://esia.gosuslugi.ru");68                Log.Information($"DefaultTimeout: {p.DefaultTimeout}");69                Log.Information($"DefaultNavigationTimeout: {p.DefaultNavigationTimeout}");70                // Авторизация71                await p.WaitForSelectorAsync("#mobileOrEmail", WaitForSelectorTimeout);...

Full Screen

Full Screen

PageActor.cs

Source:PageActor.cs Github

copy

Full Screen

...104                try105                {106                    var acceptCookiesButtonVisible = await Page.WaitForXPathAsync(107                        Configuration.XpathForAcceptCookiesButton,108                        new WaitForSelectorOptions { Visible = true, Timeout = 30000 }109                    );110                    await acceptCookiesButtonVisible.ClickAsync(new ClickOptions() { Delay = 1000 });111                }112                catch (WaitTaskTimeoutException ex) // Only catches WaitTaskTimeoutException exceptions.113                {114                }115            }116            bool isLoadMoreButtonVisible = await ScrollPageUntilHtmlElementIsVisible(Configuration.XpathForLoadMoreButton);117            if (isLoadMoreButtonVisible)118            {119                bool hasMoreContent = true;120                while (hasMoreContent)121                {122                    try123                    {124                        var loadMoreButton = await Page.WaitForXPathAsync(125                            Configuration.XpathForLoadMoreButton,126                            new WaitForSelectorOptions { Visible = true, Timeout = 30000 }127                        );128                        await loadMoreButton.ClickAsync(new ClickOptions() { Delay = 1000 });129                    }130                    catch (WaitTaskTimeoutException ex) // Only catches WaitTaskTimeoutException exceptions.131                    {132                        hasMoreContent = false;133                    }134                }135            }136            foreach (var xpath in Configuration.AbsoluteXpathsForElementsToEnsureExist)137            {138                bool isElementVisible = await ScrollPageUntilHtmlElementIsVisible(xpath);139                if (isElementVisible == false) // xpathsForDesiredHtmlElements has a treestructure, so we want to break out of the loop as soon as possible when not found.140                {141                    break;142                }143            }144        }145        private async Task<bool> ScrollPageUntilHtmlElementIsVisible(string xpath) // TODO REFACTOR146        {147            if (xpath != null)148            {149                int attempt = 1;150                int attemptLimit = 3; // TODO Should be configurable151                int currentHeight = (int)await Page.EvaluateExpressionAsync("document.body.scrollHeight");152                while (attempt <= attemptLimit)153                {154                    try155                    {156                        await Page.WaitForXPathAsync(157                            xpath,158                            new WaitForSelectorOptions { Visible = true, Timeout = 2500 }159                        );160                        return true;161                    }162                    catch (WaitTaskTimeoutException ex) // Only catches WaitTaskTimeoutException exceptions.163                    {164                        int newHeight = (int)await Page.EvaluateExpressionAsync("document.body.scrollHeight");165                        await Page.EvaluateExpressionAsync("window.scrollBy({top:" + newHeight + ",behavior:'smooth'})"); // To trigger autoload of new content.166                        if (currentHeight == newHeight)167                        {168                            break;169                        }170                        currentHeight = newHeight;171                    }172                    attempt++;...

Full Screen

Full Screen

PageBase.cs

Source:PageBase.cs Github

copy

Full Screen

...10    public abstract class PageBase11    {12        private string NameToCss(string name) => String.Format("[name='{0}']", name);13        #region Wait methods14        private readonly WaitForSelectorOptions waitForSelectorOptions = new WaitForSelectorOptions();15        private readonly NavigationOptions navigationOptions = new NavigationOptions16        {17            WaitUntil = new[] { WaitUntilNavigation.Networkidle0 },18        };19        public async Task WaitForNetworkIdle(int timeout = 15000)20        {21            navigationOptions.Timeout = timeout;22            await WebDriver.PageBase.WaitForNavigationAsync(navigationOptions);23        }24        private async Task WaitForCssElement(string css, int timeout)25        {26            waitForSelectorOptions.Timeout = timeout;27            await WebDriver.PageBase.WaitForSelectorAsync(css, waitForSelectorOptions);28        }...

Full Screen

Full Screen

Constants.cs

Source:Constants.cs Github

copy

Full Screen

...22        public const string DelimiterInWindowsPath = "\\";23        public const string DelimiterExtension = ".";24        public const int ShortTimeout = 250;25        public const int LongTimeout = 1000;26        public static WaitForSelectorOptions NoTimeoutOptions = new WaitForSelectorOptions() { Timeout = 0 };27        public static WaitForSelectorOptions NoTimeoutOptionsHidden = new WaitForSelectorOptions() { Timeout = 0, Hidden = true };28        public static NavigationOptions NoNavigationTimeoutOptions = new NavigationOptions(){Timeout = 0};29    }30}...

Full Screen

Full Screen

PageExtensions.cs

Source:PageExtensions.cs Github

copy

Full Screen

...10        public Action Action { get; set; }11    }12    public static class PageExtensions13    {14        public static Task<ElementHandle[]> WaitForAllSelectors(this Page page, WaitForSelectorOptions options = null, params string[] selectors)15        {16            return Task.WhenAll(selectors.Select(t => page.WaitForSelectorAsync(t, options)).ToArray());17        }18        public static async Task WaitForAnySelectors(this Page page, WaitForSelectorOptions options = null, params SelectorAction[] selectors)19        {20            while (selectors.Length > 0)21            {22                foreach (var sel in selectors)23                {24                    var result = await page.QuerySelectorAsync(sel.Selector);25                    if (result != null)26                    {27                        sel.Action();28                        return;29                    }30                }31                await Task.Delay(100);32            }33        }34        public static async Task WaitForAnySelectors(this Page page, WaitForSelectorOptions options = null, params string[] selectors)35        {36            while (selectors.Length > 0)37            {38                foreach (var sel in selectors)39                {40                    var result = await page.QuerySelectorAsync(sel);41                    if (result != null)42                    {43                        return;44                    }45                }46                await Task.Delay(100);47            }48        }...

Full Screen

Full Screen

WaitForSelectorOptions.cs

Source:WaitForSelectorOptions.cs Github

copy

Full Screen

2{3    /// <summary>4    /// Optional waiting parameters.5    /// </summary>6    /// <seealso cref="Page.WaitForSelectorAsync(string, WaitForSelectorOptions)"/>7    /// <seealso cref="Frame.WaitForSelectorAsync(string, WaitForSelectorOptions)"/>8    public class WaitForSelectorOptions9    {10        /// <summary>11        /// Maximum time to wait for in milliseconds. Defaults to 30000 (30 seconds).12        /// </summary>13        public int Timeout { get; set; } = 30_000;14        /// <summary>15        /// Wait for selector to become visible.16        /// </summary>17        public bool Visible { get; set; }18        /// <summary>19        /// Wait for selector to become hidden.20        /// </summary>21        public bool Hidden { get; set; }22    }...

Full Screen

Full Screen

WaitForSelectorOptions

Using AI Code Generation

copy

Full Screen

1using System;2using System.Threading.Tasks;3using PuppeteerSharp;4{5    {6        static async Task Main(string[] args)7        {8            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);9            var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = false });10            var page = await browser.NewPageAsync();11            await page.ClickAsync("input[name='q']");12            await page.Keyboard.TypeAsync("PuppeteerSharp");13            await page.Keyboard.PressAsync("Enter");14            await page.WaitForSelectorAsync("a[href='

Full Screen

Full Screen

WaitForSelectorOptions

Using AI Code Generation

copy

Full Screen

1using System;2using System.Threading.Tasks;3using PuppeteerSharp;4{5    {6        static async Task Main(string[] args)7        {8            {9            };10            using (var browser = await Puppeteer.LaunchAsync(options))11            {12                using (var page = await browser.NewPageAsync())13                {14                    await page.WaitForSelectorAsync("input[title='Search']");15                    await page.TypeAsync("input[title='Search']", "Puppeteer");16                    await page.ClickAsync("input[value='Google Search']");17                    await page.WaitForSelectorAsync("input[title='Search']");18                    await page.TypeAsync("input[title='Search']", "PuppeteerSharp");19                    await page.ClickAsync("input[value='Google Search']");20                    await page.WaitForSelectorAsync("input[title='Search']");21                    await page.TypeAsync("input[title='Search']", "PuppeteerSharp");22                    await page.ClickAsync("input[value='Google Search']");23                    await page.WaitForSelectorAsync("input[title='Search']");24                    await page.TypeAsync("input[title='Search']", "PuppeteerSharp");25                    await page.ClickAsync("input[value='Google Search']");26                    await page.WaitForSelectorAsync("input[title='Search']");27                    await page.TypeAsync("input[title='Search']", "PuppeteerSharp");28                    await page.ClickAsync("input[value='Google Search']");29                    await page.WaitForSelectorAsync("input[title='Search']");30                    await page.TypeAsync("input[title='Search']", "PuppeteerSharp");31                    await page.ClickAsync("input[value='Google Search']");32                    await page.WaitForSelectorAsync("input[title='Search']");33                    await page.TypeAsync("input[title='Search']", "PuppeteerSharp");34                    await page.ClickAsync("input[value='Google Search']");35                    await page.WaitForSelectorAsync("input[title='Search']");36                    await page.TypeAsync("input[title='Search']", "PuppeteerSharp");37                    await page.ClickAsync("input[value='Google Search']");38                    await page.WaitForSelectorAsync("input[title='Search']");39                    await page.TypeAsync("input[title='Search']", "PuppeteerSharp");40                    await page.ClickAsync("input[value='Google Search']");41                    await page.WaitForSelectorAsync("input[title='Search']");

Full Screen

Full Screen

WaitForSelectorOptions

Using AI Code Generation

copy

Full Screen

1using System;2using System.Threading.Tasks;3using PuppeteerSharp;4{5    {6        static async Task Main(string[] args)7        {8            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);9            var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = false });10            var page = await browser.NewPageAsync();11            await page.WaitForSelectorAsync("input[name='q']", new WaitForSelectorOptions { Visible = true, Timeout = 10000 });12            await page.ClickAsync("input[name='q']");13            await page.Keyboard.TypeAsync("puppeteer");14            await page.Keyboard.PressAsync("Enter");15            await page.WaitForNavigationAsync();16            await page.ScreenshotAsync("puppeteer.png");17            await browser.CloseAsync();18        }19    }20}21using System;22using System.Threading.Tasks;23using PuppeteerSharp;24{25    {26        static async Task Main(string[] args)27        {28            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);29            var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = false });30            var page = await browser.NewPageAsync();31            await page.WaitForSelectorAsync("input[name='q']", new WaitForSelectorOptions { Visible = true, Timeout = 10000 });32            await page.ClickAsync("input[name='q']");33            await page.Keyboard.TypeAsync("puppeteer");34            await page.Keyboard.PressAsync("Enter");35            await page.WaitForNavigationAsync();36            await page.ScreenshotAsync("puppeteer.png");37            await browser.CloseAsync();38        }39    }40}41using System;42using System.Threading.Tasks;43using PuppeteerSharp;44{45    {46        static async Task Main(string[] args)47        {48            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);49            var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = false });50            var page = await browser.NewPageAsync();

Full Screen

Full Screen

WaitForSelectorOptions

Using AI Code Generation

copy

Full Screen

1using System;2using System.Threading.Tasks;3using PuppeteerSharp;4{5    {6        static void Main(string[] args)7        {8            MainAsync().GetAwaiter().GetResult();9        }10        static async Task MainAsync()11        {12            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);13            var browser = await Puppeteer.LaunchAsync(new LaunchOptions14            {15                ExecutablePath = @"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"16            });17            var page = await browser.NewPageAsync();18            await page.TypeAsync("input[title='Search']", "Puppeteer Sharp");19            await page.ClickAsync("input[value='Google Search']");20            await page.WaitForSelectorAsync("div#resultStats", new WaitForSelectorOptions { Timeout = 5000 });21            await page.ScreenshotAsync("result.png");22            await browser.CloseAsync();23        }24    }25}

Full Screen

Full Screen

WaitForSelectorOptions

Using AI Code Generation

copy

Full Screen

1using System;2using System.Threading.Tasks;3using PuppeteerSharp;4{5    {6        static async Task Main(string[] args)7        {8            await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);9            var browser = await Puppeteer.LaunchAsync(new LaunchOptions10            {11                Args = new string[] { "--no-sandbox" }12            });13            var page = await browser.NewPageAsync();14            await page.WaitForSelectorAsync("input[name=q]", new WaitForSelectorOptions15            {16            });17            Console.WriteLine("Page loaded");18            await browser.CloseAsync();19        }20    }21}

Full Screen

Full Screen

WaitForSelectorOptions

Using AI Code Generation

copy

Full Screen

1var options = new WaitForSelectorOptions();2options.Timeout = 5000;3await page.WaitForSelectorAsync("input", options);4var options = new WaitForSelectorOptions();5options.Timeout = 5000;6await page.WaitForSelectorAsync("input", options);7var options = new WaitForSelectorOptions();8options.Timeout = 5000;9await page.WaitForSelectorAsync("input", options);10var options = new WaitForSelectorOptions();11options.Timeout = 5000;12await page.WaitForSelectorAsync("input", options);13var options = new WaitForSelectorOptions();14options.Timeout = 5000;15await page.WaitForSelectorAsync("input", options);16var options = new WaitForSelectorOptions();17options.Timeout = 5000;18await page.WaitForSelectorAsync("input", options);19var options = new WaitForSelectorOptions();20options.Timeout = 5000;21await page.WaitForSelectorAsync("input", options);22var options = new WaitForSelectorOptions();23options.Timeout = 5000;24await page.WaitForSelectorAsync("input", options);25var options = new WaitForSelectorOptions();26options.Timeout = 5000;27await page.WaitForSelectorAsync("input", options);28var options = new WaitForSelectorOptions();29options.Timeout = 5000;30await page.WaitForSelectorAsync("input", options);31var options = new WaitForSelectorOptions();32options.Timeout = 5000;33await page.WaitForSelectorAsync("input", options);

Full Screen

Full Screen

WaitForSelectorOptions

Using AI Code Generation

copy

Full Screen

1var options = new WaitForSelectorOptions();2options.Timeout = 2000;3var selector = "input[name='q']";4await page.WaitForSelectorAsync(selector, options);5var options = new WaitForSelectorOptions();6options.Timeout = 2000;7var selector = "input[name='q']";8await page.WaitForSelectorAsync(selector, options);9var options = new WaitForSelectorOptions();10options.Timeout = 2000;11var selector = "input[name='q']";12await page.WaitForSelectorAsync(selector, options);13var options = new WaitForSelectorOptions();14options.Timeout = 2000;15var selector = "input[name='q']";16await page.WaitForSelectorAsync(selector, options);17var options = new WaitForSelectorOptions();18options.Timeout = 2000;19var selector = "input[name='q']";20await page.WaitForSelectorAsync(selector, options);21var options = new WaitForSelectorOptions();22options.Timeout = 2000;23var selector = "input[name='q']";24await page.WaitForSelectorAsync(selector, options);25var options = new WaitForSelectorOptions();26options.Timeout = 2000;27var selector = "input[name='q']";28await page.WaitForSelectorAsync(selector, options);29var options = new WaitForSelectorOptions();30options.Timeout = 2000;31var selector = "input[name='q']";32await page.WaitForSelectorAsync(selector, options);33var options = new WaitForSelectorOptions();34options.Timeout = 2000;35var selector = "input[name='q']";36await page.WaitForSelectorAsync(selector, options);

Full Screen

Full Screen

WaitForSelectorOptions

Using AI Code Generation

copy

Full Screen

1var options = new WaitForSelectorOptions();2options.Visible = true;3options.Timeout = 10000;4await page.WaitForSelectorAsync("selector", options);5var options = new WaitForSelectorOptions();6options.Hidden = true;7options.Timeout = 10000;8await page.WaitForSelectorAsync("selector", options);9var options = new WaitForSelectorOptions();10options.Timeout = 10000;11await page.WaitForSelectorAsync("selector", options);12var options = new WaitForSelectorOptions();13options.Enabled = true;14options.Timeout = 10000;15await page.WaitForSelectorAsync("selector", options);16var options = new WaitForSelectorOptions();17options.Disabled = true;18options.Timeout = 10000;19await page.WaitForSelectorAsync("selector", options);

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Puppeteer-sharp automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful