Best Playwright-dotnet code snippet using Microsoft.Playwright.Core.Locator.CountAsync
BotCore.cs
Source:BotCore.cs  
...321                    {322                        var loginButton =323                            page.Locator(324                                "xpath=/html/body/div[1]/div/div[2]/nav/div/div[3]/div[3]/div/div[1]/div[1]/button/div/div");325                        if (loginButton.CountAsync().GetAwaiter().GetResult() > 0)326                        {327                            Click(ref loginButton);328                            Thread.Sleep(1000);329                            var usernameBox =330                                page.Locator(331                                    "xpath=/html/body/div[3]/div/div/div/div/div/div[1]/div/div/div[3]/form/div/div[1]/div/div[2]/input");332                            if (usernameBox.CountAsync().GetAwaiter().GetResult() > 0)333                            {334                                Click(ref usernameBox);335                                Thread.Sleep(1000);336                                usernameBox.TypeAsync(itm.LoginInfo.Username).GetAwaiter().GetResult();337                                var passwordBox =338                                    page.Locator(339                                        "xpath=/html/body/div[3]/div/div/div/div/div/div[1]/div/div/div[3]/form/div/div[2]/div/div[1]/div[2]/div[1]/input");340                                if (passwordBox.CountAsync().GetAwaiter().GetResult() > 0)341                                {342                                    Click(ref passwordBox);343                                    Thread.Sleep(1000);344                                    passwordBox.TypeAsync(itm.LoginInfo.Password).GetAwaiter().GetResult();345                                    Thread.Sleep(1000);346                                    var login = page.Locator(347                                        "xpath=/html/body/div[3]/div/div/div/div/div/div[1]/div/div/div[3]/form/div/div[3]/button/div/div");348                                    Thread.Sleep(1000);349                                    if (login.CountAsync().GetAwaiter().GetResult() > 0)350                                        Click(ref login);351                                }352                            }353                        }354                    }355                    catch (Exception ex)356                    {357                        LogMessage?.Invoke(new Exception($"Login failed: {ex.Message}"));358                    }359                    while (true)360                    {361                        Thread.Sleep(1000);362                        var cookie = page.Context.CookiesAsync().GetAwaiter().GetResult()363                            .Any(x => x.Name == "auth-token");364                        if (cookie)365                        {366                            StoreCookie(new Tuple<string, List<BrowserContextCookiesResult>>(itm.LoginInfo.Username,367                                new List<BrowserContextCookiesResult>(page.Context.CookiesAsync().GetAwaiter()368                                    .GetResult().ToArray())));369                            break;370                        }371                    }372                }373                while (true)374                {375                    try376                    {377                        if (_firstPage)378                        {379                            firstPage = true;380                            _firstPage = false;381                        }382                        if (firstPage)383                        {384                            var liveViewers =385                                page.Locator(386                                    "xpath=/html/body/div[1]/div/div[2]/div[1]/main/div[2]/div[3]/div/div/div[1]/div[1]/div[2]/div/div[1]/div/div/div/div[2]/div[2]/div[2]/div/div/div[1]/div[1]/div/p/span");387                            if (liveViewers.CountAsync().GetAwaiter().GetResult() > 0)388                            {389                                LiveViewer.Invoke(liveViewers.InnerTextAsync().GetAwaiter().GetResult());390                                Thread.Sleep(5000);391                            }392                        }393                    }394                    catch (Exception)395                    {396                        LiveViewer.Invoke("N/A");397                    }398                    Thread.Sleep(1000);399                    try400                    {401                        var connectionError =402                            page.Locator(403                                "xpath=/html/body/div[1]/div/div[2]/div[1]/main/div[2]/div[3]/div/div/div[2]/div/div[2]/div/div/div/div/div[7]/div/div[3]/button/div/div[2]");404                        if (connectionError.CountAsync().GetAwaiter().GetResult() > 0)405                            connectionError.ClickAsync().GetAwaiter().GetResult();406                    }407                    catch (Exception)408                    {409                        //ignored410                    }411                    412                    try413                    {414                        if (!matureClicked && matureCheckCount < 5)415                            try416                            {417                                var mature =418                                    page.Locator(419                                        "xpath=/html/body/div[1]/div/div[2]/div[1]/main/div[2]/div[3]/div/div/div[2]/div/div[2]/div/div/div/div/div[5]/div/div[3]/button/div/div");420                                if (mature.CountAsync().GetAwaiter().GetResult() > 0)421                                {422                                    Click(ref mature);423                                    matureClicked = true;424                                    matureCheckCount++;425                                }426                            }427                            catch428                            {429                                //ignored because there is no mature button430                            }431                    }432                    catch (Exception)433                    {434                        // ignored435                    }436                    try437                    {438                        if (!cacheClicked && cacheCheckCount < 5)439                            try440                            {441                                var cache = page.Locator(442                                    "xpath=/html/body/div[1]/div/div[2]/div[1]/div/div/div[3]/button/div/div/div");443                                if (cache.CountAsync().GetAwaiter().GetResult() > 0)444                                {445                                    Click(ref cache);446                                    cacheClicked = true;447                                }448                                cacheCheckCount++;449                            }450                            catch (Exception)451                            {452                                //ignored because there is no cache button453                            }454                    }455                    catch (Exception)456                    {457                        // ignored458                    }459                    try460                    {461                        if (_refreshInterval != 0 &&462                            DateTime.Now - startDate > TimeSpan.FromMinutes(_refreshInterval))463                        {464                            page.ReloadAsync().GetAwaiter().GetResult();465                            startDate = DateTime.Now;466                        }467                    }468                    catch (Exception)469                    {470                        //ignored471                    }472                    try473                    {474                        if (messageInterval != 0 &&475                            DateTime.Now - messageStartDate > TimeSpan.FromMinutes(messageInterval) &&476                            itm.LoginInfo != null)477                        {478                            SendMessage();479                            messageStartDate = DateTime.Now;480                        }481                    }482                    catch (Exception)483                    {484                        //ignored485                    }486                }487                void SendMessage()488                {489                    try490                    {491                        var chatBox = page.WaitForSelectorAsync(".chat-wysiwyg-input__editor").GetAwaiter()492                            .GetResult();493                        if (_chatMessages.TryTake(out var message))494                        {495                            chatBox?.TypeAsync(message).GetAwaiter().GetResult();496                            page.Keyboard.PressAsync("Enter").GetAwaiter().GetResult();497                        }498                    }499                    catch (Exception)500                    {501                        //ignored  502                    }503                }504            }505            if (itm.Service == StreamService.Service.Youtube)506            {507                Thread.Sleep(3000);508                try509                {510                    var play = page.Locator(511                        "xpath=/html/body/ytd-app/div/ytd-page-manager/ytd-watch-flexy/div[5]/div[1]/div/div[1]/div/div/div/ytd-player/div/div/div[5]/button");512                    play?.ClickAsync().GetAwaiter().GetResult();513                }514                catch (Exception)515                {516                    //ignored517                }518                while (true)519                {520                    try521                    {522                        if (_firstPage)523                        {524                            firstPage = true;525                            _firstPage = false;526                        }527                        if (firstPage)528                        {529                            var liveViewers = page.Locator(530                                "xpath=/html/body/ytd-app/div/ytd-page-manager/ytd-watch-flexy/div[5]/div[1]/div/div[6]/div[2]/ytd-video-primary-info-renderer/div/div/div[1]/div[1]/ytd-video-view-count-renderer/span[1]");531                            if (liveViewers.CountAsync().GetAwaiter().GetResult() > 0)532                            {533                                LiveViewer.Invoke(534                                    liveViewers.InnerTextAsync().GetAwaiter().GetResult().Split(' ')[0]);535                                Thread.Sleep(5000);536                            }537                        }538                    }539                    catch (Exception)540                    {541                        LiveViewer.Invoke("N/A");542                    }543                    try544                    {545                        if (_refreshInterval != 0 &&546                            DateTime.Now - startDate > TimeSpan.FromMinutes(_refreshInterval))547                        {548                            page.ReloadAsync().GetAwaiter().GetResult();549                            startDate = DateTime.Now;550                        }551                    }552                    catch553                    {554                        //ignored555                    }556                }557            }558            if (itm.Service == StreamService.Service.DLive)559            {560                Thread.Sleep(3000);561                var isPlaying = false;562                while (true)563                {564                    try565                    {566                        if (_firstPage)567                        {568                            firstPage = true;569                            _firstPage = false;570                        }571                        if (firstPage)572                        {573                            try574                            {575                                var liveViewers =576                                    page.Locator(577                                        "xpath=/html/body/div/div[1]/div[20]/div[2]/div/div[2]/div/div/div/div[1]/div/div[1]/div[3]/div/div[1]/div/div[2]/div[2]");578                                if (liveViewers.CountAsync().GetAwaiter().GetResult() > 0)579                                {580                                    LiveViewer.Invoke(liveViewers.InnerTextAsync().GetAwaiter().GetResult()581                                        .Split(" ")[0]);582                                    Thread.Sleep(5000);583                                }584                            }585                            catch (Exception)586                            {587                                //ignored588                            }589                            try590                            {591                                var liveViewers =592                                    page.Locator(593                                        "xpath=/html/body/div/div[1]/div[18]/div[2]/div/div/div/div/div/div/div/div/div[3]/div/div[3]/div/div/div[1]/div/div[1]/div[2]/div/div[1]/span");594                                if (liveViewers.CountAsync().GetAwaiter().GetResult() > 0)595                                {596                                    LiveViewer.Invoke(liveViewers.InnerTextAsync().GetAwaiter().GetResult());597                                    Thread.Sleep(5000);598                                }599                            }600                            catch (Exception)601                            {602                                //ignored603                            }604                        }605                        if (!isPlaying)606                        {607                            var play = page.Locator(608                                "xpath=/html/body/div/div[1]/div[14]/div[2]/div/div[2]/div/div/div/div/div/div/div[1]/div/div/div/div/div[4]/div[2]/button/svg");609                            if (play.CountAsync().GetAwaiter().GetResult() > 0)610                            {611                                Click(ref play);612                                isPlaying = true;613                            }614                        }615                        Thread.Sleep(1000);616                    }617                    catch (Exception)618                    {619                        //ignored620                    }621                    try622                    {623                        if (_refreshInterval != 0 &&624                            DateTime.Now - startDate > TimeSpan.FromMinutes(_refreshInterval))625                        {626                            page.ReloadAsync().GetAwaiter().GetResult();627                            isPlaying = false;628                            startDate = DateTime.Now;629                        }630                    }631                    catch (Exception)632                    {633                        //ignored634                    }635                }636            }637            if (itm.Service == StreamService.Service.NimoTv)638            {639                Thread.Sleep(3000);640                var isPlaying = false;641                if (itm.LoginInfo != null)642                {643                    Thread.Sleep(1000);644                    var allCookies = GetCookie(itm.LoginInfo.Username);645                    if (allCookies != null)646                        foreach (var cookie in allCookies)647                        {648                            Cookie[] cookies =649                            {650                                new()651                                {652                                    Domain = cookie.Domain, Expires = cookie.Expiry, Name = cookie.Name,653                                    Path = cookie.Path, Secure = cookie.Secure, Url = cookie.Path,654                                    HttpOnly = cookie.HttpOnly, Value = cookie.Value655                                }656                            };657                            page.Context.AddCookiesAsync(cookies);658                        }659                    try660                    {661                        var loginButton =662                            page.Locator("xpath=/html/body/div[2]/div[1]/div/div[2]/div/div[2]/button");663                        if (loginButton.CountAsync().GetAwaiter().GetResult() > 0)664                        {665                            Click(ref loginButton);666                            Thread.Sleep(1000);667                            var usernameBox =668                                page.Locator(669                                    "xpath=/html/body/div[6]/div/div[2]/div/div[2]/div/div/div[3]/div[1]/div[2]/input");670                            if (usernameBox.CountAsync().GetAwaiter().GetResult() > 0)671                            {672                                Click(ref usernameBox);673                                Thread.Sleep(1000);674                                usernameBox.TypeAsync(itm.LoginInfo.Username.Split('/')[1]).GetAwaiter()675                                    .GetResult();676                                var countryCodeArrow =677                                    page.Locator(678                                        "xpath=/html/body/div[6]/div/div[2]/div/div[2]/div/div/div[3]/div[1]/div[2]/div[1]");679                                if (countryCodeArrow.CountAsync().GetAwaiter().GetResult() > 0)680                                {681                                    Click(ref countryCodeArrow);682                                    Thread.Sleep(1000);683                                    var searchCountryCode =684                                        page.Locator(685                                            "xpath=/html/body/div[6]/div/div[2]/div/div[4]/div/div/div/div[1]/input");686                                    if (searchCountryCode.CountAsync().GetAwaiter().GetResult() > 0)687                                    {688                                        searchCountryCode.TypeAsync(itm.LoginInfo.Username.Split('/')[0]689                                            .Replace("+", string.Empty)).GetAwaiter().GetResult();690                                        Thread.Sleep(1000);691                                        var firstElement =692                                            page.Locator(693                                                "xpath=/html/body/div[6]/div/div[2]/div/div[4]/div/div/div/div[2]/div[1]/div[2]");694                                        if (firstElement.CountAsync().GetAwaiter().GetResult() > 0)695                                            Click(ref firstElement);696                                    }697                                }698                                var passwordBox =699                                    page.Locator(700                                        "xpath=/html/body/div[6]/div/div[2]/div/div[2]/div/div/div[3]/div[1]/div[3]/input");701                                if (passwordBox.CountAsync().GetAwaiter().GetResult() > 0)702                                {703                                    Click(ref passwordBox);704                                    Thread.Sleep(1000);705                                    passwordBox.TypeAsync(itm.LoginInfo.Password).GetAwaiter().GetResult();706                                    Thread.Sleep(1000);707                                    var login = page.Locator(708                                        "xpath=/html/body/div[6]/div/div[2]/div/div[2]/div/div/div[3]/div[1]/button");709                                    Thread.Sleep(1000);710                                    if (login.CountAsync().GetAwaiter().GetResult() > 0)711                                        Click(ref login);712                                }713                            }714                        }715                    }716                    catch (Exception ex)717                    {718                        LogMessage?.Invoke(new Exception($"Login failed: {ex.Message}"));719                    }720                    while (true)721                    {722                        Thread.Sleep(1000);723                        var cookie = page.Context.CookiesAsync().GetAwaiter().GetResult()724                            .Any(x => x.Name == "userName");725                        if (cookie)726                        {727                            StoreCookie(new Tuple<string, List<BrowserContextCookiesResult>>(itm.LoginInfo.Username,728                                new List<BrowserContextCookiesResult>(page.Context.CookiesAsync().GetAwaiter()729                                    .GetResult().ToArray())));730                            break;731                        }732                    }733                }734                while (true)735                {736                    try737                    {738                        if (_firstPage)739                        {740                            firstPage = true;741                            _firstPage = false;742                        }743                        if (firstPage)744                        {745                            var liveViewers =746                                page.Locator(747                                    "xpath=/html/body/div[2]/div[2]/div[2]/div[1]/div/div/div[2]/div[2]/div[1]/div[1]/div/div[2]/div[3]/span");748                            if (liveViewers.CountAsync().GetAwaiter().GetResult() > 0)749                            {750                                LiveViewer.Invoke(liveViewers.InnerTextAsync().GetAwaiter().GetResult());751                                Thread.Sleep(5000);752                            }753                        }754                    }755                    catch (Exception)756                    {757                        LiveViewer.Invoke("N/A");758                    }759                    try760                    {761                        if (!isPlaying)762                        {763                            var play = page.Locator(764                                "xpath=/html/body/div[2]/div[2]/div[2]/div[1]/div/div/div[2]/div[2]/div[1]/div[2]/div[1]/div[2]/div/span");765                            if (play.CountAsync().GetAwaiter().GetResult() > 0)766                            {767                                Click(ref play);768                                isPlaying = true;769                            }770                        }771                    }772                    catch (Exception)773                    {774                        //ignored775                    }776                    try777                    {778                        if (_refreshInterval != 0 &&779                            DateTime.Now - startDate > TimeSpan.FromMinutes(_refreshInterval))780                        {781                            page.ReloadAsync().GetAwaiter().GetResult();782                            isPlaying = false;783                            startDate = DateTime.Now;784                        }785                    }786                    catch (Exception)787                    {788                        //ignored789                    }790                    try791                    {792                        if (messageInterval != 0 &&793                            DateTime.Now - messageStartDate > TimeSpan.FromMinutes(messageInterval) &&794                            itm.LoginInfo != null)795                        {796                            SendMessage();797                            messageStartDate = DateTime.Now;798                        }799                    }800                    catch (Exception)801                    {802                        //ignored803                    }804                    void SendMessage()805                    {806                        try807                        {808                            var chatBox = page.WaitForSelectorAsync(".nimo-room__chatroom__chat-box__input")809                                .GetAwaiter().GetResult();810                            if (chatBox != null && _chatMessages.TryTake(out var message))811                            {812                                chatBox.TypeAsync(message).GetAwaiter().GetResult();813                                page.Keyboard.PressAsync("Enter");814                            }815                        }816                        catch (Exception)817                        {818                            //ignored  819                        }820                    }821                    Thread.Sleep(1000);822                }823            }824            if (itm.Service == StreamService.Service.Twitter)825            {826                Thread.Sleep(3000);827                while (true)828                {829                    try830                    {831                        if (_firstPage)832                        {833                            firstPage = true;834                            _firstPage = false;835                        }836                        if (firstPage)837                        {838                            var liveViewers =839                                page.Locator(840                                    "xpath=/html/body/div[2]/div[2]/div[2]/div[1]/div/div/div[2]/div[2]/div[1]/div[1]/div/div[2]/div[3]/span");841                            if (liveViewers.CountAsync().GetAwaiter().GetResult() > 0)842                            {843                                LiveViewer.Invoke(liveViewers.InnerTextAsync().GetAwaiter().GetResult());844                                Thread.Sleep(5000);845                            }846                        }847                    }848                    catch (Exception)849                    {850                        LiveViewer.Invoke("N/A");851                    }852                    try853                    {854                        if (_refreshInterval != 0 &&855                            DateTime.Now - startDate > TimeSpan.FromMinutes(_refreshInterval))856                        {857                            page.ReloadAsync().GetAwaiter().GetResult();858                            startDate = DateTime.Now;859                        }860                    }861                    catch (Exception)862                    {863                        //ignored864                    }865                    Thread.Sleep(1000);866                }867            }868            if (itm.Service == StreamService.Service.Facebook)869            {870                Thread.Sleep(3000);871                if (itm.LoginInfo != null)872                {873                    Thread.Sleep(1000);874                    var allCookies = GetCookie(itm.LoginInfo.Username);875                    if (allCookies != null)876                        foreach (var cookie in allCookies)877                        {878                            Cookie[] cookies =879                            {880                                new()881                                {882                                    Domain = cookie.Domain, Expires = cookie.Expiry, Name = cookie.Name,883                                    Path = cookie.Path, Secure = cookie.Secure, Url = cookie.Path,884                                    HttpOnly = cookie.HttpOnly, Value = cookie.Value885                                }886                            };887                            page.Context.AddCookiesAsync(cookies);888                        }889                    try890                    {891                        var usernameBox =892                            page.Locator(893                                "xpath=/html/body/div[1]/div/div[1]/div/div[2]/div[2]/div[2]/div/form/div[2]/div[1]/label/input");894                        if (usernameBox.CountAsync().GetAwaiter().GetResult() > 0)895                        {896                            Click(ref usernameBox);897                            Thread.Sleep(1000);898                            usernameBox.TypeAsync(itm.LoginInfo.Username).GetAwaiter().GetResult();899                            var passwordBox =900                                page.Locator(901                                    "xpath=/html/body/div[1]/div/div[1]/div/div[2]/div[2]/div[2]/div/form/div[2]/div[2]/label/input");902                            if (passwordBox.CountAsync().GetAwaiter().GetResult() > 0)903                            {904                                Click(ref passwordBox);905                                Thread.Sleep(1000);906                                passwordBox.TypeAsync(itm.LoginInfo.Password).GetAwaiter().GetResult();907                                Thread.Sleep(1000);908                                var login = page.Locator(909                                    "xpath=/html/body/div[1]/div/div[1]/div/div[2]/div[2]/div[2]/div/form/div[2]/div[3]/div/div/div[1]/div/span/span");910                                Thread.Sleep(1000);911                                if (login.CountAsync().GetAwaiter().GetResult() > 0)912                                    Click(ref login);913                            }914                        }915                    }916                    catch (Exception ex)917                    {918                        LogMessage?.Invoke(new Exception($"Login failed: {ex.Message}"));919                    }920                    Thread.Sleep(3000);921                    page.ReloadAsync().GetAwaiter().GetResult();922                    while (true)923                    {924                        Thread.Sleep(1000);925                        var cookie = page.Context.CookiesAsync().GetAwaiter().GetResult()926                            .Any(x => x.Name == "c_user");927                        if (cookie)928                        {929                            StoreCookie(new Tuple<string, List<BrowserContextCookiesResult>>(itm.LoginInfo.Username,930                                new List<BrowserContextCookiesResult>(page.Context.CookiesAsync().GetAwaiter()931                                    .GetResult().ToArray())));932                            break;933                        }934                    }935                }936                while (true)937                {938                    try939                    {940                        if (_firstPage)941                        {942                            firstPage = true;943                            _firstPage = false;944                        }945                        if (firstPage)946                        {947                            var liveViewers =948                                page.Locator(949                                    "xpath=/html/body/div[1]/div/div[1]/div/div[3]/div/div/div[1]/div[2]/div[1]/div/div/div/div[1]/div[1]/div/div/div/div[2]/div/div[5]/div[2]/span[2]");950                            if (liveViewers.CountAsync().GetAwaiter().GetResult() > 0)951                            {952                                LiveViewer.Invoke(liveViewers.InnerTextAsync().GetAwaiter().GetResult());953                                Thread.Sleep(5000);954                            }955                        }956                    }957                    catch (Exception)958                    {959                        //ignored960                    }961                    try962                    {963                        if (_refreshInterval != 0 &&964                            DateTime.Now - startDate > TimeSpan.FromMinutes(_refreshInterval))965                        {966                            page.ReloadAsync().GetAwaiter().GetResult();967                            startDate = DateTime.Now;968                        }969                    }970                    catch (Exception)971                    {972                        //ignored973                    }974                }975            }976            if (itm.Service == StreamService.Service.TrovoLive)977            {978                Thread.Sleep(5000);979                if (!Headless && !_useLowCpuRam)980                    try981                    {982                        page.EvaluateAsync("window.localStorage.setItem('live/userClarityLevel', '" +983                                           itm.PreferredQuality + "');");984                        page.ReloadAsync().GetAwaiter().GetResult();985                    }986                    catch (Exception)987                    {988                        //ignored989                    }990                if (itm.LoginInfo != null)991                {992                    Thread.Sleep(1000);993                    var allCookies = GetCookie(itm.LoginInfo.Username);994                    if (allCookies != null)995                        foreach (var cookie in allCookies)996                        {997                            Cookie[] cookies =998                            {999                                new()1000                                {1001                                    Domain = cookie.Domain, Expires = cookie.Expiry, Name = cookie.Name,1002                                    Path = cookie.Path, Secure = cookie.Secure, Url = cookie.Path,1003                                    HttpOnly = cookie.HttpOnly, Value = cookie.Value1004                                }1005                            };1006                            page.Context.AddCookiesAsync(cookies);1007                        }1008                    try1009                    {1010                        var loginSignUpButton =1011                            page.Locator("xpath=/html/body/div[1]/div/div/nav/div[3]/div[3]/button");1012                        if (loginSignUpButton.CountAsync().GetAwaiter().GetResult() > 0)1013                        {1014                            Click(ref loginSignUpButton);1015                            Thread.Sleep(4000);1016                            ILocator usernameBox;1017                            try1018                            {1019                                usernameBox =1020                                    page.Locator(1021                                        "xpath=/html/body/div[4]/div/div[2]/div[3]/div[1]/div[1]/div/input");1022                            }1023                            catch1024                            {1025                                usernameBox =1026                                    page.Locator(1027                                        "xpath=/html/body/div[4]/div/div[2]/div[3]/div[1]/div[1]/div[1]/input");1028                            }1029                            if (usernameBox.CountAsync().GetAwaiter().GetResult() > 0)1030                            {1031                                Click(ref usernameBox);1032                                Thread.Sleep(1000);1033                                usernameBox.TypeAsync(itm.LoginInfo.Username).GetAwaiter().GetResult();1034                                Thread.Sleep(1000);1035                                var passwordBox =1036                                    page.Locator(1037                                        "xpath=/html/body/div[4]/div/div[2]/div[3]/div[1]/div[3]/div/input");1038                                if (passwordBox.CountAsync().GetAwaiter().GetResult() > 0)1039                                {1040                                    passwordBox.TypeAsync(itm.LoginInfo.Password).GetAwaiter().GetResult();1041                                    var login = page.Locator(1042                                        "xpath=/html/body/div[4]/div/div[2]/div[3]/div[1]/button");1043                                    Thread.Sleep(1000);1044                                    if (login.CountAsync().GetAwaiter().GetResult() > 0)1045                                        Click(ref login);1046                                }1047                            }1048                        }1049                    }1050                    catch (Exception ex)1051                    {1052                        LogMessage?.Invoke(new Exception($"Login failed: {ex.Message}"));1053                    }1054                    Thread.Sleep(3000);1055                    page.ReloadAsync().GetAwaiter().GetResult();1056                    while (true)1057                    {1058                        Thread.Sleep(1000);1059                        var cookie = page.Context.CookiesAsync().GetAwaiter().GetResult().Any(x => x.Name == "uid");1060                        if (cookie)1061                        {1062                            StoreCookie(new Tuple<string, List<BrowserContextCookiesResult>>(itm.LoginInfo.Username,1063                                new List<BrowserContextCookiesResult>(page.Context.CookiesAsync().GetAwaiter()1064                                    .GetResult().ToArray())));1065                            break;1066                        }1067                    }1068                }1069                var matureClicked = false;1070                var chatRulesClicked = false;1071                var matureCheckCount = 0;1072                while (true)1073                {1074                    try1075                    {1076                        if (_firstPage)1077                        {1078                            firstPage = true;1079                            _firstPage = false;1080                        }1081                        if (firstPage)1082                        {1083                            var liveViewers =1084                                page.Locator(1085                                    "xpath=/html/body/div[1]/div/div[1]/div/div[3]/div/div/div[1]/div[2]/div[1]/div/div/div/div[1]/div[1]/div/div/div/div[2]/div/div[5]/div[2]/span[2]");1086                            if (liveViewers.CountAsync().GetAwaiter().GetResult() > 0)1087                            {1088                                LiveViewer.Invoke(liveViewers.InnerTextAsync().GetAwaiter().GetResult());1089                                Thread.Sleep(5000);1090                            }1091                        }1092                    }1093                    catch (Exception)1094                    {1095                        //ignored1096                    }1097                    try1098                    {1099                        if (_refreshInterval != 0 &&1100                            DateTime.Now - startDate > TimeSpan.FromMinutes(_refreshInterval))1101                        {1102                            page.ReloadAsync().GetAwaiter().GetResult();1103                            startDate = DateTime.Now;1104                        }1105                    }1106                    catch (Exception)1107                    {1108                        //ignored1109                    }1110                    try1111                    {1112                        if (!matureClicked && matureCheckCount < 5)1113                            try1114                            {1115                                ILocator mature = null;1116                                try1117                                {1118                                    mature = page.Locator(1119                                        "xpath=/html/body/div[1]/div/div/div/div[2]/div/div/div[1]/div[1]/div[1]/div/div[4]/div[3]/section/div/button[2]");1120                                }1121                                catch1122                                {1123                                    //ignored1124                                }1125                                if (mature.CountAsync().GetAwaiter().GetResult() == 0)1126                                    mature = page.Locator(1127                                        "xpath=/html/body/div[1]/div/div/div/div[2]/div/div/div[1]/div[1]/div[1]/div/div[2]/div[3]/section/div/button[2]");1128                                if (mature.CountAsync().GetAwaiter().GetResult() > 0)1129                                {1130                                    Click(ref mature);1131                                    matureClicked = true;1132                                }1133                                matureCheckCount++;1134                            }1135                            catch1136                            {1137                                //ignored because there is no mature button1138                            }1139                    }1140                    catch (Exception)1141                    {1142                        // ignored1143                    }1144                    if (!chatRulesClicked)1145                        try1146                        {1147                            var chatRules = page.Locator(1148                                "xpath=/html/body/div[1]/div/div/div/div[2]/div/section/div[3]/div/section/section/div/button");1149                            if (chatRules.CountAsync().GetAwaiter().GetResult() > 0)1150                            {1151                                chatRules.ClickAsync().GetAwaiter().GetResult();1152                                chatRulesClicked = true;1153                            }1154                        }1155                        catch (Exception)1156                        {1157                            //ignored1158                        }1159                    try1160                    {1161                        if (messageInterval != 0 &&1162                            DateTime.Now - messageStartDate > TimeSpan.FromMinutes(messageInterval) &&1163                            itm.LoginInfo != null)1164                        {1165                            SendMessage();1166                            messageStartDate = DateTime.Now;1167                        }1168                    }1169                    catch (Exception)1170                    {1171                        //ignored1172                    }1173                    void SendMessage()1174                    {1175                        try1176                        {1177                            var chatBox =1178                                page.Locator(1179                                    "xpath=/html/body/div[1]/div/div/div/div[2]/div/section/div[3]/div/section/div[1]/div[1]/div[1]");1180                            if (chatBox.CountAsync().GetAwaiter().GetResult() > 0 &&1181                                _chatMessages.TryTake(out var message))1182                            {1183                                chatBox.TypeAsync(message).GetAwaiter().GetResult();1184                                page.Keyboard.PressAsync("Enter");1185                            }1186                        }1187                        catch (Exception)1188                        {1189                            //ignored  1190                        }1191                    }1192                    Thread.Sleep(1000);1193                }1194            }1195            if (itm.Service == StreamService.Service.BigoLive)1196            {1197                Thread.Sleep(2000);1198                page.ReloadAsync().GetAwaiter().GetResult();1199                1200                /*if (itm.LoginInfo != null)1201                {1202                    Thread.Sleep(1000);1203                    var allCookies = GetCookie(itm.LoginInfo.Username);1204                    if (allCookies != null)1205                        foreach (var cookie in allCookies)1206                        {1207                            Cookie[] cookies =1208                            {1209                                new()1210                                {1211                                    Domain = cookie.Domain, Expires = cookie.Expiry, Name = cookie.Name,1212                                    Path = cookie.Path, Secure = cookie.Secure, Url = cookie.Path,1213                                    HttpOnly = cookie.HttpOnly, Value = cookie.Value1214                                }1215                            };1216                            page.Context.AddCookiesAsync(cookies);1217                        }1218                    try1219                    {1220                        var loginSignUpButton =1221                            page.Locator("xpath=/html/body/div/div/div/header/div[2]/div/button");1222                        if (loginSignUpButton.CountAsync().GetAwaiter().GetResult() > 0)1223                        {1224                            Click(ref loginSignUpButton);1225                            1226                            var withCredentialsButton =1227                                page.Locator("xpath=/html/body/div/div[2]/div/header/div[3]/div/div[2]");1228                            if (withCredentialsButton.CountAsync().GetAwaiter().GetResult() > 0)1229                            {1230                                Click(ref withCredentialsButton);1231                                Thread.Sleep(4000);1232                                ILocator usernameBox;1233                                try1234                                {1235                                    usernameBox =1236                                        page.Locator(1237                                            "xpath=/html/body/div[4]/div/div[2]/div[3]/div[1]/div[1]/div/input");1238                                }1239                                catch1240                                {1241                                    usernameBox =1242                                        page.Locator(1243                                            "xpath=/html/body/div[4]/div/div[2]/div[3]/div[1]/div[1]/div[1]/input");1244                                }1245                                if (usernameBox.CountAsync().GetAwaiter().GetResult() > 0)1246                                {1247                                    Click(ref usernameBox);1248                                    Thread.Sleep(1000);1249                                    usernameBox.TypeAsync(itm.LoginInfo.Username).GetAwaiter().GetResult();1250                                    Thread.Sleep(1000);1251                                    var passwordBox =1252                                        page.Locator(1253                                            "xpath=/html/body/div[4]/div/div[2]/div[3]/div[1]/div[3]/div/input");1254                                    if (passwordBox.CountAsync().GetAwaiter().GetResult() > 0)1255                                    {1256                                        passwordBox.TypeAsync(itm.LoginInfo.Password).GetAwaiter().GetResult();1257                                        var login = page.Locator(1258                                            "xpath=/html/body/div[4]/div/div[2]/div[3]/div[1]/button");1259                                        Thread.Sleep(1000);1260                                        if (login.CountAsync().GetAwaiter().GetResult() > 0)1261                                            Click(ref login);1262                                    }1263                                }1264                            }1265                        }1266                    }1267                    catch (Exception ex)1268                    {1269                        LogMessage?.Invoke(new Exception($"Login failed: {ex.Message}"));1270                    }1271                    Thread.Sleep(3000);1272                    page.ReloadAsync().GetAwaiter().GetResult();1273                    while (true)1274                    {...BlazorWasmTemplateTest.cs
Source:BlazorWasmTemplateTest.cs  
...393                page.WaitForSelectorAsync("h1 >> text=Weather forecast"),394                page.ClickAsync("text=Fetch data"));395            // Asynchronously loads and displays the table of weather forecasts396            await page.WaitForSelectorAsync("table>tbody>tr");397            Assert.Equal(5, await page.Locator("p+table>tbody>tr").CountAsync());398        }399    }400    private static string ReadFile(string basePath, string path)401    {402        var fullPath = Path.Combine(basePath, path);403        var doesExist = File.Exists(fullPath);404        Assert.True(doesExist, $"Expected file to exist, but it doesn't: {path}");405        return File.ReadAllText(Path.Combine(basePath, path));406    }407    private static void UpdatePublishedSettings(Project serverProject)408    {409        // Hijack here the config file to use the development key during publish.410        var appSettings = JObject.Parse(File.ReadAllText(Path.Combine(serverProject.TemplateOutputDir, "appsettings.json")));411        var appSettingsDevelopment = JObject.Parse(File.ReadAllText(Path.Combine(serverProject.TemplateOutputDir, "appsettings.Development.json")));...Locator.cs
Source:Locator.cs  
...95        public Task SetCheckedAsync(bool checkedState, LocatorSetCheckedOptions options = null)96            => checkedState ?97                CheckAsync(ConvertOptions<LocatorCheckOptions>(options))98                : UncheckAsync(ConvertOptions<LocatorUncheckOptions>(options));99        public Task<int> CountAsync()100            => _frame.QueryCountAsync(_selector);101        public Task DblClickAsync(LocatorDblClickOptions options = null)102            => _frame.DblClickAsync(_selector, ConvertOptions<FrameDblClickOptions>(options));103        public Task DispatchEventAsync(string type, object eventInit = null, LocatorDispatchEventOptions options = null)104            => _frame.DispatchEventAsync(_selector, type, eventInit, ConvertOptions<FrameDispatchEventOptions>(options));105        public Task DragToAsync(ILocator target, LocatorDragToOptions options = null)106            => _frame.DragAndDropAsync(_selector, ((Locator)target)._selector, ConvertOptions<FrameDragAndDropOptions>(options));107        public async Task<IElementHandle> ElementHandleAsync(LocatorElementHandleOptions options = null)108            => await _frame.WaitForSelectorAsync(109                _selector,110                ConvertOptions<FrameWaitForSelectorOptions>(options)).ConfigureAwait(false);111        public Task<IReadOnlyList<IElementHandle>> ElementHandlesAsync()112            => _frame.QuerySelectorAllAsync(_selector);113        public Task<T> EvaluateAllAsync<T>(string expression, object arg = null)114            => _frame.EvalOnSelectorAllAsync<T>(_selector, expression, arg);...BlazorServerTemplateTest.cs
Source:BlazorServerTemplateTest.cs  
...145        await page.ClickAsync("a[href=fetchdata] >> text=Fetch data");146        await page.WaitForSelectorAsync("h1 >> text=Weather forecast");147        // Asynchronously loads and displays the table of weather forecasts148        await page.WaitForSelectorAsync("table>tbody>tr");149        Assert.Equal(5, await page.Locator("p+table>tbody>tr").CountAsync());150    }151    [Theory(Skip = "https://github.com/dotnet/aspnetcore/issues/30882")]152    [InlineData("IndividualB2C", null)]153    [InlineData("IndividualB2C", new string[] { "--called-api-url \"https://graph.microsoft.com\"", "--called-api-scopes user.readwrite" })]154    [InlineData("SingleOrg", null)]155    [InlineData("SingleOrg", new string[] { "--called-api-url \"https://graph.microsoft.com\"", "--called-api-scopes user.readwrite" })]156    [InlineData("SingleOrg", new string[] { "--calls-graph" })]157    public Task BlazorServerTemplate_IdentityWeb_BuildAndPublish(string auth, string[] args)158        => CreateBuildPublishAsync("blazorserveridweb" + Guid.NewGuid().ToString().Substring(0, 10).ToLowerInvariant(), auth, args);159}...CountAsync
Using AI Code Generation
1using Microsoft.Playwright;2using System.Threading.Tasks;3{4    static async Task Main(string[] args)5    {6        using var playwright = await Playwright.CreateAsync();7        await using var browser = await playwright.Chromium.LaunchAsync();8        var page = await browser.NewPageAsync();9        var search = await page.QuerySelectorAsync("input[name='q']");10        await search.TypeAsync("Playwright");11        await page.ClickAsync("input[value='Google Search']");12        await page.WaitForNavigationAsync();13        await page.ScreenshotAsync("screenshot.png");14        var locator = await page.QuerySelectorAllAsync("h3 > a");15        var count = await locator.CountAsync();16        System.Console.WriteLine(count);17    }18}CountAsync
Using AI Code Generation
1using Microsoft.Playwright;2using System.Threading.Tasks;3{4    {5        static async Task Main(string[] args)6        {7            using var playwright = await Playwright.CreateAsync();8            await using var browser = await playwright.Firefox.LaunchAsync();9            var page = await browser.NewPageAsync();10            var searchBox = await page.QuerySelectorAsync("input[name=\"q\"]");11            await searchBox.TypeAsync("Playwright");12            await searchBox.PressAsync("Enter");13            await page.WaitForLoadStateAsync(LoadState.NetworkIdle);14            var searchResults = await page.QuerySelectorAllAsync("h3");15            int count = await searchResults.CountAsync();16            System.Console.WriteLine("Count of search results is: " + count);17        }18    }19}20using Microsoft.Playwright;21using System.Threading.Tasks;22{23    {24        static async Task Main(string[] args)25        {26            using var playwright = await Playwright.CreateAsync();27            await using var browser = await playwright.Firefox.LaunchAsync();28            var page = await browser.NewPageAsync();29            var searchBox = await page.QuerySelectorAsync("input[name=\"q\"]");30            await searchBox.TypeAsync("Playwright");31            await searchBox.PressAsync("Enter");32            await page.WaitForLoadStateAsync(LoadState.NetworkIdle);33            var searchResults = await page.QuerySelectorAllAsync("h3");34            int count = await searchResults.CountAsync();35            System.Console.WriteLine("Count of search results is: " + count);36        }37    }38}CountAsync
Using AI Code Generation
1using System;2using System.Threading.Tasks;3using Microsoft.Playwright.Core;4using Microsoft.Playwright.Core.Locators;5using Microsoft.Playwright.Core.Tests;6{7    static async Task Main(string[] args)8    {9        await using var playwright = await Playwright.CreateAsync();10        await using var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions { Headless = false });11        var page = await browser.NewPageAsync();12        var locator = page.Locator("input[type='text']");13        var count = await locator.CountAsync();14        Console.WriteLine(count);15    }16}17using System;18using System.Threading.Tasks;19using Microsoft.Playwright.Core;20using Microsoft.Playwright.Core.Locators;21using Microsoft.Playwright.Core.Tests;22{23    static async Task Main(string[] args)24    {25        await using var playwright = await Playwright.CreateAsync();26        await using var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions { Headless = false });27        var page = await browser.NewPageAsync();28        var locator = page.Locator("input[type='text']");29        var count = await locator.CountAsync();30        Console.WriteLine(count);31    }32}33using System;34using System.Threading.Tasks;35using Microsoft.Playwright.Core;36using Microsoft.Playwright.Core.Locators;37using Microsoft.Playwright.Core.Tests;38{39    static async Task Main(string[] args)40    {41        await using var playwright = await Playwright.CreateAsync();42        await using var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions { Headless = false });43        var page = await browser.NewPageAsync();44        var locator = page.Locator("input[type='text']");45        var count = await locator.CountAsync();CountAsync
Using AI Code Generation
1var locator = await page.QuerySelectorAsync("body");2Console.WriteLine("CountAsync method of Microsoft.Playwright.Core.Locator class");3var count = await locator.CountAsync();4Console.WriteLine($"CountAsync method of Microsoft.Playwright.Core.Locator class: {count}");5var elementHandle = await page.QuerySelectorAsync("body");6Console.WriteLine("CountAsync method of Microsoft.Playwright.Core.ElementHandle class");7var count2 = await elementHandle.CountAsync();8Console.WriteLine($"CountAsync method of Microsoft.Playwright.Core.ElementHandle class: {count2}");9var frame = await page.QuerySelectorAsync("body");10Console.WriteLine("CountAsync method of Microsoft.Playwright.Core.Frame class");11var count3 = await frame.CountAsync();12Console.WriteLine($"CountAsync method of Microsoft.Playwright.Core.Frame class: {count3}");13var page = await browser.NewPageAsync();14Console.WriteLine("CountAsync method of Microsoft.Playwright.Core.Page class");15var count4 = await page.CountAsync();16Console.WriteLine($"CountAsync method of Microsoft.Playwright.Core.Page class: {count4}");17var page = await browser.NewPageAsync();18Console.WriteLine("CountAsync method of Microsoft.Playwright.Core.IPage class");19var count5 = await page.CountAsync();20Console.WriteLine($"CountAsync method of Microsoft.Playwright.Core.IPage class: {count5}");21var browserContext = await browser.NewContextAsync();22Console.WriteLine("CountAsync method of Microsoft.Playwright.Core.IBrowserContext class");23var count6 = await browserContext.CountAsync();24Console.WriteLine($"CountAsync method of Microsoft.Playwright.Core.IBrowserContext class: {count6}");25var browser = await Playwright.CreateAsync().Chromium.LaunchAsync();26Console.WriteLine("CountAsync method of Microsoft.Playwright.Core.IBrowser class");27var count7 = await browser.CountAsync();28Console.WriteLine($"CountAsync method of Microsoft.Playwright.Core.IBrowser class: {count7}");29var playwright = await Playwright.CreateAsync();LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!
