Best Playwright-dotnet code snippet using Microsoft.Playwright.Core.Locator.ClickAsync
BotCore.cs
Source:BotCore.cs  
...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                    {1275                        Thread.Sleep(1000);1276                        var cookie = page.Context.CookiesAsync().GetAwaiter().GetResult().Any(x => x.Name == "uid");1277                        if (cookie)1278                        {1279                            StoreCookie(new Tuple<string, List<BrowserContextCookiesResult>>(itm.LoginInfo.Username,1280                                new List<BrowserContextCookiesResult>(page.Context.CookiesAsync().GetAwaiter()1281                                    .GetResult().ToArray())));1282                            break;1283                        }1284                    }1285                }*/1286                while (true)1287                {1288                    try1289                    {1290                        if (_firstPage)1291                        {1292                            firstPage = true;1293                            _firstPage = false;1294                        }1295                        if (firstPage)1296                        {1297                            var liveViewers = page.WaitForSelectorAsync(".info-view-nums").GetAwaiter().GetResult();1298                            1299                            if (liveViewers != null)1300                            {1301                                LiveViewer.Invoke(liveViewers.InnerTextAsync().GetAwaiter().GetResult());1302                                Thread.Sleep(5000);1303                            }1304                        }1305                    }1306                    catch (Exception)1307                    {1308                        //ignored1309                    }1310                    try1311                    {1312                        if (_refreshInterval != 0 &&1313                            DateTime.Now - startDate > TimeSpan.FromMinutes(_refreshInterval))1314                        {1315                            page.ReloadAsync().GetAwaiter().GetResult();1316                            startDate = DateTime.Now;1317                        }1318                    }1319                    catch (Exception)1320                    {1321                        //ignored1322                    }1323                    Thread.Sleep(1000);1324                }1325            }1326            try1327            {1328                page.CloseAsync().GetAwaiter().GetResult();1329            }1330            catch (Exception)1331            {1332                //ignored1333            }1334        }1335        catch (InvalidOperationException ex)1336        {1337            if (ex.Message.Contains("only supports Chrome version"))1338            {1339                CanRun = false;1340                InitializationError?.Invoke(new Exception("Please update your Google Chrome!"));1341            }1342        }1343        catch (Exception ex)1344        {1345            InitializationError?.Invoke(ex);1346        }1347    }1348    private void Click(ref ILocator locator)1349    {1350        locator.ClickAsync().GetAwaiter().GetResult();1351    }1352    private class MyCookie1353    {1354        public bool Secure { get; set; }1355        public bool HttpOnly { get; set; }1356        public string Name { get; set; }1357        public string Value { get; set; }1358        public string Domain { get; set; }1359        public string Path { get; set; }1360        public float Expiry { get; set; }1361    }1362}...Frame.cs
Source:Frame.cs  
...316        {317            var converted = SetInputFilesHelpers.ConvertInputFiles(files);318            await _channel.SetInputFilesAsync(selector, converted.Files, noWaitAfter: options?.NoWaitAfter, timeout: options?.Timeout, options?.Strict).ConfigureAwait(false);319        }320        public Task ClickAsync(string selector, FrameClickOptions options = default)321            => _channel.ClickAsync(322                selector,323                delay: options?.Delay,324                button: options?.Button,325                clickCount: options?.ClickCount,326                modifiers: options?.Modifiers,327                position: options?.Position,328                timeout: options?.Timeout,329                force: options?.Force,330                noWaitAfter: options?.NoWaitAfter,331                trial: options?.Trial,332                strict: options?.Strict);333        public Task DblClickAsync(string selector, FrameDblClickOptions options = default)334            => _channel.DblClickAsync(335                selector,336                delay: options?.Delay,337                button: options?.Button,338                position: options?.Position,339                modifiers: options?.Modifiers,340                timeout: options?.Timeout,341                force: options?.Force,342                noWaitAfter: options?.NoWaitAfter,343                trial: options?.Trial,344                strict: options?.Strict);345        public Task CheckAsync(string selector, FrameCheckOptions options = default)346            => _channel.CheckAsync(347                selector,348                position: options?.Position,...BlazorWasmTemplateTest.cs
Source:BlazorWasmTemplateTest.cs  
...347        await Task.WhenAll(348            page.WaitForNavigationAsync(new() { UrlString = "**/counter" }),349            page.WaitForSelectorAsync("h1 >> text=Counter"),350            page.WaitForSelectorAsync("p >> text=Current count: 0"),351            page.ClickAsync("a[href=counter]"));352        // Clicking the counter button works353        await Task.WhenAll(354            page.WaitForSelectorAsync("p >> text=Current count: 1"),355            page.ClickAsync("p+button >> text=Click me"));356        if (usesAuth)357        {358            await Task.WhenAll(359                page.WaitForNavigationAsync(new() { UrlString = "**/Identity/Account/Login**", WaitUntil = WaitUntilState.NetworkIdle }),360                page.ClickAsync("text=Log in"));361            await Task.WhenAll(362                page.WaitForSelectorAsync("[name=\"Input.Email\"]"),363                page.WaitForNavigationAsync(new() { UrlString = "**/Identity/Account/Register**", WaitUntil = WaitUntilState.NetworkIdle }),364                page.ClickAsync("text=Register as a new user"));365            var userName = $"{Guid.NewGuid()}@example.com";366            var password = "[PLACEHOLDER]-1a";367            await page.TypeAsync("[name=\"Input.Email\"]", userName);368            await page.TypeAsync("[name=\"Input.Password\"]", password);369            await page.TypeAsync("[name=\"Input.ConfirmPassword\"]", password);370            // We will be redirected to the RegisterConfirmation371            await Task.WhenAll(372                page.WaitForNavigationAsync(new() { UrlString = "**/Identity/Account/RegisterConfirmation**", WaitUntil = WaitUntilState.NetworkIdle }),373                page.ClickAsync("#registerSubmit"));374            // We will be redirected to the ConfirmEmail375            await Task.WhenAll(376                page.WaitForNavigationAsync(new() { UrlString = "**/Identity/Account/ConfirmEmail**", WaitUntil = WaitUntilState.NetworkIdle }),377                page.ClickAsync("text=Click here to confirm your account"));378            // Now we can login379            await page.ClickAsync("text=Login");380            await page.WaitForSelectorAsync("[name=\"Input.Email\"]");381            await page.TypeAsync("[name=\"Input.Email\"]", userName);382            await page.TypeAsync("[name=\"Input.Password\"]", password);383            await page.ClickAsync("#login-submit");384            // Need to navigate to fetch page385            await page.GotoAsync(new Uri(page.Url).GetLeftPart(UriPartial.Authority));386            Assert.Equal(appName.Trim(), (await page.TitleAsync()).Trim());387        }388        if (!skipFetchData)389        {390            // Can navigate to the 'fetch data' page391            await Task.WhenAll(392                page.WaitForNavigationAsync(new() { UrlString = "**/fetchdata" }),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    {...BrowserTypeConnectTests.cs
Source:BrowserTypeConnectTests.cs  
...323            await page.SetContentAsync($"<a href=\"{Server.Prefix}/download\">download</a>");324            var downloadTask = page.WaitForDownloadAsync();325            await TaskUtils.WhenAll(326                downloadTask,327                page.ClickAsync("a"));328            using var tmpDir = new TempDirectory();329            string userPath = Path.Combine(tmpDir.Path, "these", "are", "directories", "download.txt");330            var download = downloadTask.Result;331            await download.SaveAsAsync(userPath);332            Assert.True(new FileInfo(userPath).Exists);333            Assert.AreEqual("Hello world", File.ReadAllText(userPath));334            var exception = await PlaywrightAssert.ThrowsAsync<PlaywrightException>(() => download.PathAsync());335            Assert.AreEqual("Path is not available when connecting remotely. Use SaveAsAsync() to save a local copy.", exception.Message);336            await browser.CloseAsync();337        }338        [PlaywrightTest("browsertype-connect.spec.ts", "should error when saving download after deletion")]339        public async Task ShouldErrorWhenSavingDownloadAfterDeletion()340        {341            Server.SetRoute("/download", context =>342            {343                context.Response.Headers["Content-Type"] = "application/octet-stream";344                context.Response.Headers["Content-Disposition"] = "attachment";345                return context.Response.WriteAsync("Hello world");346            });347            var browser = await BrowserType.ConnectAsync(_remoteServer.WSEndpoint);348            var page = await browser.NewPageAsync(new() { AcceptDownloads = true });349            await page.SetContentAsync($"<a href=\"{Server.Prefix}/download\">download</a>");350            var downloadTask = page.WaitForDownloadAsync();351            await TaskUtils.WhenAll(352                downloadTask,353                page.ClickAsync("a"));354            using var tmpDir = new TempDirectory();355            string userPath = Path.Combine(tmpDir.Path, "download.txt");356            var download = downloadTask.Result;357            await download.DeleteAsync();358            var exception = await PlaywrightAssert.ThrowsAsync<PlaywrightException>(() => download.SaveAsAsync(userPath));359            StringAssert.Contains("Target page, context or browser has been closed", exception.Message);360            await browser.CloseAsync();361        }362        [PlaywrightTest("browsertype-connect.spec.ts", "should save har")]363        public async Task ShouldSaveHar()364        {365            using var tempDirectory = new TempDirectory();366            var harPath = tempDirectory.Path + "/test.har";367            var browser = await BrowserType.ConnectAsync(_remoteServer.WSEndpoint);368            var context = await browser.NewContextAsync(new()369            {370                RecordHarPath = harPath371            });372            var page = await context.NewPageAsync();373            await page.GotoAsync(Server.EmptyPage);374            await context.CloseAsync();375            await browser.CloseAsync();376            Assert.That(harPath, Does.Exist);377            var logString = System.IO.File.ReadAllText(harPath);378            StringAssert.Contains(Server.EmptyPage, logString);379        }380        [PlaywrightTest("browsertype-connect.spec.ts", "should record trace with sources")]381        public async Task ShouldRecordContextTraces()382        {383            using var tempDirectory = new TempDirectory();384            var tracePath = tempDirectory.Path + "/trace.zip";385            var browser = await BrowserType.ConnectAsync(_remoteServer.WSEndpoint);386            var context = await browser.NewContextAsync();387            var page = await context.NewPageAsync();388            await context.Tracing.StartAsync(new() { Sources = true });389            await page.GotoAsync(Server.EmptyPage);390            await page.SetContentAsync("<button>Click</button>");391            await page.ClickAsync("button");392            await context.Tracing.StopAsync(new TracingStopOptions { Path = tracePath });393            await browser.CloseAsync();394            Assert.That(tracePath, Does.Exist);395            ZipFile.ExtractToDirectory(tracePath, tempDirectory.Path);396            Assert.That(tempDirectory.Path + "/trace.trace", Does.Exist);397            Assert.That(tempDirectory.Path + "/trace.network", Does.Exist);398            Assert.AreEqual(1, Directory.GetFiles(Path.Join(tempDirectory.Path, "resources"), "*.txt").Length);399        }400        [PlaywrightTest("browsertype-connect.spec.ts", "should upload large file")]401        [Skip(SkipAttribute.Targets.Firefox, SkipAttribute.Targets.Webkit)]402        public async Task ShouldUploadLargeFile()403        {404            var browser = await BrowserType.ConnectAsync(_remoteServer.WSEndpoint);405            var context = await browser.NewContextAsync();406            var page = await context.NewPageAsync();407            await page.GotoAsync(Server.Prefix + "/input/fileupload.html");408            using var tmpDir = new TempDirectory();409            var filePath = Path.Combine(tmpDir.Path, "200MB");410            using (var stream = File.OpenWrite(filePath))411            {412                var str = new string('a', 4 * 1024);413                for (var i = 0; i < 50 * 1024; i++)414                {415                    await stream.WriteAsync(Encoding.UTF8.GetBytes(str));416                }417            }418            var input = page.Locator("input[type=file]");419            var events = await input.EvaluateHandleAsync(@"e => {420                const events = [];421                e.addEventListener('input', () => events.push('input'));422                e.addEventListener('change', () => events.push('change'));423                return events;424            }");425            await input.SetInputFilesAsync(filePath);426            Assert.AreEqual(await input.EvaluateAsync<string>("e => e.files[0].name"), "200MB");427            Assert.AreEqual(await events.EvaluateAsync<string[]>("e => e"), new[] { "input", "change" });428            var (file0Name, file0Size) = await TaskUtils.WhenAll(429               Server.WaitForRequest("/upload", request => (request.Form.Files[0].FileName, request.Form.Files[0].Length)),430               page.ClickAsync("input[type=submit]")431            );432            Assert.AreEqual("200MB", file0Name);433            Assert.AreEqual(200 * 1024 * 1024, file0Size);434        }435        private class RemoteServer436        {437            private Process Process { get; set; }438            public string WSEndpoint { get; set; }439            internal RemoteServer(string browserName)440            {441                try442                {443                    var startInfo = new ProcessStartInfo(Driver.GetExecutablePath(), $"launch-server --browser {browserName}")444                    {...Locator.cs
Source:Locator.cs  
...87        public Task CheckAsync(LocatorCheckOptions options = null)88            => _frame.CheckAsync(89                _selector,90                ConvertOptions<FrameCheckOptions>(options));91        public Task ClickAsync(LocatorClickOptions options = null)92            => _frame.ClickAsync(93                _selector,94                ConvertOptions<FrameClickOptions>(options));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);115        public Task<JsonElement?> EvaluateAsync(string expression, object arg = null, LocatorEvaluateOptions options = null)116            => EvaluateAsync<JsonElement?>(expression, arg, options);...BlazorServerTemplateTest.cs
Source:BlazorServerTemplateTest.cs  
...135        Assert.Equal("Index", (await page.TitleAsync()).Trim());136        // Initially displays the home page137        await page.WaitForSelectorAsync("h1 >> text=Hello, world!");138        // Can navigate to the counter page139        await page.ClickAsync("a[href=counter] >> text=Counter");140        await page.WaitForSelectorAsync("h1+p >> text=Current count: 0");141        // Clicking the counter button works142        await page.ClickAsync("p+button >> text=Click me");143        await page.WaitForSelectorAsync("h1+p >> text=Current count: 1");144        // Can navigate to the 'fetch data' page145        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}...PlaywrightIPhoneTest.cs
Source:PlaywrightIPhoneTest.cs  
...21        var context = await browser.NewContextAsync(playwright.Devices["iPhone 11 Pro"]); // Complete list of devices - https://github.com/microsoft/playwright/blob/main/packages/playwright-core/src/server/deviceDescriptorsSource.json22        var page = await context.NewPageAsync();23        try {24          await page.GotoAsync("https://www.google.co.in/");25          await page.Locator("[aria-label='Search']").ClickAsync();26          await page.FillAsync("[aria-label='Search']", "BrowserStack");27          await page.Keyboard.PressAsync("Enter");28          await page.Locator("[aria-current='page']").WaitForAsync();29          var title = await page.TitleAsync();30          if (title == "BrowserStack - Google Search")31          {32            // following line of code is responsible for marking the status of the test on BrowserStack as 'passed'. You can use this code in your after hook after each test33            await MarkTestStatus("passed", "Title matched", page);34          } else {35            await MarkTestStatus("failed", "Title did not match", page);36          }37        }38        catch (Exception err) {39          await MarkTestStatus("failed", err.Message, page);...PlaywrightPixelTest.cs
Source:PlaywrightPixelTest.cs  
...21        var context = await browser.NewContextAsync(playwright.Devices["Pixel 5"]);  // Complete list of devices - https://github.com/microsoft/playwright/blob/main/packages/playwright-core/src/server/deviceDescriptorsSource.json22        var page = await context.NewPageAsync();23        try {24          await page.GotoAsync("https://www.google.co.in/");25          await page.Locator("[aria-label='Search']").ClickAsync();26          await page.FillAsync("[aria-label='Search']", "BrowserStack");27          await page.Keyboard.PressAsync("Enter");28          await page.Locator("[aria-current='page']").WaitForAsync();29          var title = await page.TitleAsync();30          if (title == "BrowserStack - Google Search")31          {32            // following line of code is responsible for marking the status of the test on BrowserStack as 'passed'. You can use this code in your after hook after each test33            await MarkTestStatus("passed", "Title matched", page);34          } else {35            await MarkTestStatus("failed", "Title did not match", page);36          }37        }38        catch (Exception err) {39          await MarkTestStatus("failed", err.Message, page);...ClickAsync
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.Chromium.LaunchAsync(new LaunchOptions { Headless = false });9            var context = await browser.NewContextAsync();10            var page = await context.NewPageAsync();11            await page.ClickAsync("text=I agree");12            await page.ClickAsync("text=Sign in");13            await page.TypeAsync("input[name=\"identifier\"]", "ClickAsync
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.Chromium.LaunchAsync();9            var context = await browser.NewContextAsync();10            var page = await context.NewPageAsync();11            var searchBox = page.Locator("input[name='q']");12            await searchBox.TypeAsync("Hello World");13            await searchBox.PressAsync("Enter");14            await page.WaitForLoadStateAsync(LoadState.DOMContentLoaded);15            var title = await page.TitleAsync();16            System.Console.WriteLine($"Title of the page is {title}");17        }18    }19}ClickAsync
Using AI Code Generation
1var browser = await Playwright.CreateAsync().Chromium.LaunchAsync(new LaunchOptions2{3});4var context = await browser.NewContextAsync();5var page = await context.NewPageAsync();6var searchBox = page.GetLocator("input[name='q']");7await searchBox.TypeAsync("Playwright");8await searchBox.PressAsync("Enter");9await page.WaitForSelectorAsync("text=Playwright: Browser automation library for .NET");10await page.ClickAsync("text=Playwright: Browser automation library for .NET");11await page.WaitForLoadStateAsync(LoadState.DOMContentLoaded);12await page.ScreenshotAsync("result.png");13await browser.CloseAsync();14var browser = await Playwright.CreateAsync().Chromium.LaunchAsync(new LaunchOptions15{16});17var context = await browser.NewContextAsync();18var page = await context.NewPageAsync();19await page.TypeAsync("input[name='q']", "Playwright");20await page.PressAsync("input[name='q']", "Enter");21await page.WaitForSelectorAsync("text=Playwright: Browser automation library for .NET");22await page.ClickAsync("text=Playwright: Browser automation library for .NET");23await page.WaitForLoadStateAsync(LoadState.DOMContentLoaded);24await page.ScreenshotAsync("result.png");25await browser.CloseAsync();26var browser = await Playwright.CreateAsync().Chromium.LaunchAsync(new LaunchOptions27{28});29var context = await browser.NewContextAsync();30var page = await context.NewPageAsync();31await page.TypeAsync("input[name='q']", "Playwright");32await page.PressAsync("input[name='q']", "Enter");33await page.WaitForSelectorAsync("text=Playwright: Browser automation library for .NET");34var elementHandle = await page.QuerySelectorAsync("text=Playwright: Browser automation library for .NET");35await elementHandle.ClickAsync();ClickAsync
Using AI Code Generation
1using Microsoft.Playwright.Core;2using System.Threading.Tasks;3{4    {5        static async Task Main(string[] args)6        {7            using var playwright = await Playwright.CreateAsync();8            var browser = await playwright.Chromium.LaunchAsync();9            var page = await browser.NewPageAsync();10            await page.ClickAsync("text=I'm Feeling Lucky");11            await browser.CloseAsync();12        }13    }14}15using Microsoft.Playwright.Core;16using System.Threading.Tasks;17{18    {19        static async Task Main(string[] args)20        {21            using var playwright = await Playwright.CreateAsync();22            var browser = await playwright.Chromium.LaunchAsync();23            var page = await browser.NewPageAsync();24            await page.ClickAsync("text=I'm Feeling Lucky");25            await browser.CloseAsync();26        }27    }28}29using Microsoft.Playwright.Core;30using System.Threading.Tasks;31{32    {33        static async Task Main(string[] args)34        {35            using var playwright = await Playwright.CreateAsync();36            var browser = await playwright.Chromium.LaunchAsync();37            var page = await browser.NewPageAsync();38            await page.ClickAsync("text=I'm Feeling Lucky");39            await browser.CloseAsync();40        }41    }42}43using Microsoft.Playwright.Core;44using System.Threading.Tasks;45{46    {47        static async Task Main(string[] args)48        {49            using var playwright = await Playwright.CreateAsync();50            var browser = await playwright.Chromium.LaunchAsync();51            var page = await browser.NewPageAsync();52            await page.ClickAsync("text=I'm Feeling Lucky");53            await browser.CloseAsync();54        }55    }56}ClickAsync
Using AI Code Generation
1await page.ClickAsync("#id");2await page.QuerySelectorAsync("#id").ClickAsync();3await page.FrameAsync().ClickAsync("#id");4await page.ClickAsync("#id");5await page.ClickAsync("#id");6await page.QuerySelectorAsync("#id").ClickAsync();7await page.ClickAsync("#id");8await page.FrameAsync().ClickAsync("#id");9await page.Context.ClickAsync("#id");10await page.Context.Browser.ClickAsync("#id");11await page.Context.Browser.Playwright.ClickAsync("#id");12await page.ClickAsync("#id");13await page.QuerySelectorAsync("#id").ClickAsync();14await page.ClickAsync("#id");15await page.FrameAsync().ClickAsync("#id");16await page.Context.ClickAsync("#id");17await page.Context.Browser.ClickAsync("#id");18await page.Context.Browser.Playwright.ClickAsync("#id");19await page.ClickAsync("#id");20await page.QuerySelectorAsync("#id").ClickAsync();ClickAsync
Using AI Code Generation
1await page.ClickAsync("text=Click me");2await page.QuerySelectorAsync("text=Click me").ClickAsync();3await page.ClickAsync("css=button");4await page.QuerySelectorAsync("css=button").ClickAsync();5await page.ClickAsync("css=input[type=button]");6await page.QuerySelectorAsync("css=input[type=button]").ClickAsync();7await page.ClickAsync("css=input[type=submit]");8await page.QuerySelectorAsync("css=input[type=submit]").ClickAsync();9await page.ClickAsync("css=input[type=reset]");10await page.QuerySelectorAsync("css=input[type=reset]").ClickAsync();11await page.ClickAsync("css=input[type=image]");12await page.QuerySelectorAsync("css=input[type=image]").ClickAsync();13await page.ClickAsync("css=input[type=button] >> text=Click me");14await page.QuerySelectorAsync("css=input[type=button] >>ClickAsync
Using AI Code Generation
1using Microsoft.Playwright;2await page.ClickAsync("a");3await page.ClickAsync("a", new ClickOptions { Position = new Position { X = 10, Y = 10 } });4await page.ClickAsync("a", new ClickOptions { Position = new Position { X = 10, Y = 10 }, ClickCount = 2 });5await page.ClickAsync("a", new ClickOptions { Button = MouseButton.Middle });6await page.ClickAsync("a", new ClickOptions { Button = MouseButton.Right });7await page.ClickAsync("a", new ClickOptions { ClickCount = 2 });8await page.ClickAsync("a", new ClickOptions { Delay = 1000 });9await page.ClickAsync("a", new ClickOptions { Force = true });10await page.ClickAsync("a", new ClickOptions { Force = true, Position = new Position { X = 10, Y = 10 } });11await page.ClickAsync("a", new ClickOptions { Force = true, Position = new Position { X = 10, Y = 10 }, ClickCount = 2 });12await page.ClickAsync("a", new ClickOptions { Force = true, Position = new Position { X = 10, Y = 10 }, ClickCount = 2, Button = MouseButton.Middle });13await page.ClickAsync("a", new ClickOptions { Force = true, Position = new Position { X = 10, Y = 10 }, ClickCount = 2, Button = MouseButton.Middle, Delay = 1000 });14await page.ClickAsync("a", new ClickOptions { Force = true, Position = new Position { X = 10, Y = 10 }, ClickCount = 2, Button = MouseButton.Middle, Delay = 1000, Modifiers = new Modifier[] { Modifier.Shift } });15await page.ClickAsync("a", new ClickOptions { Force = true, Position = new Position { X = 10, Y = 10 }, ClickCount = 2, Button = MouseButton.Middle, Delay = 1000, Modifiers = new Modifier[] { Modifier.Shift, Modifier.Alt } });16await page.ClickAsync("a", new ClickOptions { Force = true, Position = new Position { X = 10, Y = 10 }, ClickCount = 2, Button = MouseButton.Middle, Delay = 1000, Modifiers = new Modifier[] { Modifier.Shift, Modifier.Alt, Modifier.Control } });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!!
