Best Playwright-dotnet code snippet using Microsoft.Playwright.Tests.PageClickTests.ShouldClickTheButton
PageClickTests.cs
Source:PageClickTests.cs  
...31{32    public class PageClickTests : PageTestEx33    {34        [PlaywrightTest("page-click.spec.ts", "should click the button")]35        public async Task ShouldClickTheButton()36        {37            await Page.GotoAsync(Server.Prefix + "/input/button.html");38            await Page.ClickAsync("button");39            Assert.AreEqual("Clicked", await Page.EvaluateAsync<string>("result"));40        }41        [PlaywrightTest("page-click.spec.ts", "should click svg")]42        public async Task ShouldClickSvg()43        {44            await Page.SetContentAsync($@"45                <svg height=""100"" width=""100"">46                  <circle onclick=""javascript:window.__CLICKED=42"" cx=""50"" cy=""50"" r=""40"" stroke=""black"" stroke-width=""3"" fill=""red""/>47                </svg>48            ");49            await Page.ClickAsync("circle");50            Assert.AreEqual(42, await Page.EvaluateAsync<int>("() => window.__CLICKED"));51        }52        [PlaywrightTest("page-click.spec.ts", "should click svg")]53        public async Task ShouldClickTheButtonIfWindowNodeIsRemoved()54        {55            await Page.GotoAsync(Server.Prefix + "/input/button.html");56            await Page.EvaluateAsync("delete window.Node");57            await Page.ClickAsync("button");58            Assert.AreEqual("Clicked", await Page.EvaluateAsync<string>("result"));59        }60        [PlaywrightTest("page-click.spec.ts", "should click on a span with an inline element inside")]61        public async Task ShouldClickOnASpanWithAnInlineElementInside()62        {63            await Page.SetContentAsync($@"64                <style>65                span::before {{66                    content: 'q';67                }}68                </style>69                <span onclick='javascript:window.CLICKED=42'></span>70            ");71            await Page.ClickAsync("span");72            Assert.AreEqual(42, await Page.EvaluateAsync<int>("() => window.CLICKED"));73        }74        [PlaywrightTest("page-click.spec.ts", "should click the button after navigation")]75        public async Task ShouldClickTheButtonAfterNavigation()76        {77            await Page.GotoAsync(Server.Prefix + "/input/button.html");78            await Page.ClickAsync("button");79            await Page.GotoAsync(Server.Prefix + "/input/button.html");80            await Page.ClickAsync("button");81            Assert.AreEqual("Clicked", await Page.EvaluateAsync<string>("result"));82        }83        [PlaywrightTest("page-click.spec.ts", "should click the button after a cross origin navigation")]84        public async Task ShouldClickTheButtonAfterACrossOriginNavigation()85        {86            await Page.GotoAsync(Server.Prefix + "/input/button.html");87            await Page.ClickAsync("button");88            await Page.GotoAsync(Server.CrossProcessPrefix + "/input/button.html");89            await Page.ClickAsync("button");90            Assert.AreEqual("Clicked", await Page.EvaluateAsync<string>("result"));91        }92        [PlaywrightTest("page-click.spec.ts", "should click with disabled javascript")]93        public async Task ShouldClickWithDisabledJavascript()94        {95            await using var context = await Browser.NewContextAsync(new() { JavaScriptEnabled = false });96            var page = await context.NewPageAsync();97            await page.GotoAsync(Server.Prefix + "/wrappedlink.html");98            await TaskUtils.WhenAll(99                page.ClickAsync("a"),100                page.WaitForNavigationAsync()101            );102            Assert.AreEqual(Server.Prefix + "/wrappedlink.html#clicked", page.Url);103        }104        [PlaywrightTest("page-click.spec.ts", "should click when one of inline box children is outside of viewport")]105        public async Task ShouldClickWhenOneOfInlineBoxChildrenIsOutsideOfViewport()106        {107            await Page.SetContentAsync($@"108            <style>109            i {{110                position: absolute;111                top: -1000px;112            }}113            </style>114            <span onclick='javascript:window.CLICKED = 42;'><i>woof</i><b>doggo</b></span>115            ");116            await Page.ClickAsync("span");117            Assert.AreEqual(42, await Page.EvaluateAsync<int>("() => window.CLICKED"));118        }119        [PlaywrightTest("page-click.spec.ts", "should select the text by triple clicking")]120        public async Task ShouldSelectTheTextByTripleClicking()121        {122            await Page.GotoAsync(Server.Prefix + "/input/textarea.html");123            const string text = "This is the text that we are going to try to select. Let's see how it goes.";124            await Page.FillAsync("textarea", text);125            await Page.ClickAsync("textarea", new() { ClickCount = 3 });126            Assert.AreEqual(text, await Page.EvaluateAsync<string>(@"() => {127                const textarea = document.querySelector('textarea');128                return textarea.value.substring(textarea.selectionStart, textarea.selectionEnd);129            }"));130        }131        [PlaywrightTest("page-click.spec.ts", "should click offscreen buttons")]132        public async Task ShouldClickOffscreenButtons()133        {134            await Page.GotoAsync(Server.Prefix + "/offscreenbuttons.html");135            var messages = new List<string>();136            Page.Console += (_, e) => messages.Add(e.Text);137            for (int i = 0; i < 11; ++i)138            {139                // We might have scrolled to click a button - reset to (0, 0).140                await Page.EvaluateAsync("() => window.scrollTo(0, 0)");141                await Page.ClickAsync($"#btn{i}");142            }143            Assert.AreEqual(new List<string>144            {145                "button #0 clicked",146                "button #1 clicked",147                "button #2 clicked",148                "button #3 clicked",149                "button #4 clicked",150                "button #5 clicked",151                "button #6 clicked",152                "button #7 clicked",153                "button #8 clicked",154                "button #9 clicked",155                "button #10 clicked"156            }, messages);157        }158        [PlaywrightTest("page-click.spec.ts", "should waitFor visible when already visible")]159        public async Task ShouldWaitForVisibleWhenAlreadyVisible()160        {161            await Page.GotoAsync(Server.Prefix + "/input/button.html");162            await Page.ClickAsync("button");163            Assert.AreEqual("Clicked", await Page.EvaluateAsync<string>("result"));164        }165        [PlaywrightTest("page-click.spec.ts", "should not wait with force")]166        public async Task ShouldNotWaitWithForce()167        {168            await Page.GotoAsync(Server.Prefix + "/input/button.html");169            await Page.EvalOnSelectorAsync("button", "b => b.style.display = 'none'");170            var exception = await PlaywrightAssert.ThrowsAsync<PlaywrightException>(()171                => Page.ClickAsync("button", new() { Force = true }));172            StringAssert.Contains("Element is not visible", exception.Message);173            Assert.AreEqual("Was not clicked", await Page.EvaluateAsync<string>("result"));174        }175        [PlaywrightTest("page-click.spec.ts", "should waitFor display:none to be gone")]176        public async Task ShouldWaitForDisplayNoneToBeGone()177        {178            await Page.GotoAsync(Server.Prefix + "/input/button.html");179            await Page.EvalOnSelectorAsync("button", "b => b.style.display = 'none'");180            var clickTask = Page.ClickAsync("button", new() { Timeout = 0 });181            await GiveItAChanceToClick(Page);182            Assert.False(clickTask.IsCompleted);183            Assert.AreEqual("Was not clicked", await Page.EvaluateAsync<string>("result"));184            await Page.EvalOnSelectorAsync("button", "b => b.style.display = 'block'");185            await clickTask;186            Assert.AreEqual("Clicked", await Page.EvaluateAsync<string>("result"));187        }188        [PlaywrightTest("page-click.spec.ts", "should waitFor visibility:hidden to be gone")]189        public async Task ShouldWaitForVisibilityhiddenToBeGone()190        {191            await Page.GotoAsync(Server.Prefix + "/input/button.html");192            await Page.EvalOnSelectorAsync("button", "b => b.style.visibility = 'hidden'");193            var clickTask = Page.ClickAsync("button", new() { Timeout = 0 });194            await GiveItAChanceToClick(Page);195            Assert.False(clickTask.IsCompleted);196            Assert.AreEqual("Was not clicked", await Page.EvaluateAsync<string>("result"));197            await Page.EvalOnSelectorAsync("button", "b => b.style.visibility = 'visible'");198            await clickTask;199            Assert.AreEqual("Clicked", await Page.EvaluateAsync<string>("result"));200        }201        [PlaywrightTest("page-click.spec.ts", "should waitFor visible when parent is hidden")]202        public async Task ShouldWaitForVisibleWhenParentIsHidden()203        {204            await Page.GotoAsync(Server.Prefix + "/input/button.html");205            await Page.EvalOnSelectorAsync("button", "b => b.parentElement.style.display = 'none'");206            var clickTask = Page.ClickAsync("button", new() { Timeout = 0 });207            await GiveItAChanceToClick(Page);208            Assert.False(clickTask.IsCompleted);209            Assert.AreEqual("Was not clicked", await Page.EvaluateAsync<string>("result"));210            await Page.EvalOnSelectorAsync("button", "b => b.parentElement.style.display = 'block'");211            await clickTask;212            Assert.AreEqual("Clicked", await Page.EvaluateAsync<string>("result"));213        }214        [PlaywrightTest("page-click.spec.ts", "should click wrapped links")]215        public async Task ShouldClickWrappedLinks()216        {217            await Page.GotoAsync(Server.Prefix + "/wrappedlink.html");218            await Page.ClickAsync("a");219            Assert.True(await Page.EvaluateAsync<bool>("window.__clicked"));220        }221        [PlaywrightTest("page-click.spec.ts", "should click on checkbox input and toggle")]222        public async Task ShouldClickOnCheckboxInputAndToggle()223        {224            await Page.GotoAsync(Server.Prefix + "/input/checkbox.html");225            Assert.Null(await Page.EvaluateAsync<bool?>("result.check"));226            await Page.ClickAsync("input#agree");227            Assert.True(await Page.EvaluateAsync<bool>("result.check"));228            Assert.AreEqual(new[] {229                "mouseover",230                "mouseenter",231                "mousemove",232                "mousedown",233                "mouseup",234                "click",235                "input",236                "change"237            }, await Page.EvaluateAsync<string[]>("result.events"));238            await Page.ClickAsync("input#agree");239            Assert.False(await Page.EvaluateAsync<bool>("result.check"));240        }241        [PlaywrightTest("page-click.spec.ts", "should click on checkbox label and toggle")]242        public async Task ShouldClickOnCheckboxLabelAndToggle()243        {244            await Page.GotoAsync(Server.Prefix + "/input/checkbox.html");245            Assert.Null(await Page.EvaluateAsync("result.check"));246            await Page.ClickAsync("label[for=\"agree\"]");247            Assert.True(await Page.EvaluateAsync<bool>("result.check"));248            Assert.AreEqual(new[] {249                "click",250                "input",251                "change"252            }, await Page.EvaluateAsync<string[]>("result.events"));253            await Page.ClickAsync("label[for=\"agree\"]");254            Assert.False(await Page.EvaluateAsync<bool>("result.check"));255        }256        [PlaywrightTest("page-click.spec.ts", "should not hang with touch-enabled viewports")]257        public async Task ShouldNotHangWithTouchEnabledViewports()258        {259            await using var context = await Browser.NewContextAsync(new()260            {261                ViewportSize = Playwright.Devices["iPhone 6"].ViewportSize,262                HasTouch = Playwright.Devices["iPhone 6"].HasTouch,263            });264            var page = await context.NewPageAsync();265            await page.Mouse.DownAsync();266            await page.Mouse.MoveAsync(100, 10);267            await page.Mouse.UpAsync();268        }269        [PlaywrightTest("page-click.spec.ts", "should scroll and click the button")]270        [Ignore("Flacky")]271        public async Task ShouldScrollAndClickTheButton()272        {273            await Page.GotoAsync(Server.Prefix + "/input/scrollable.html");274            await Page.ClickAsync("#button-5");275            Assert.AreEqual("clicked", await Page.EvaluateAsync<string>("document.querySelector(\"#button-5\").textContent"));276            await Page.ClickAsync("#button-80");277            Assert.AreEqual("clicked", await Page.EvaluateAsync<string>("document.querySelector(\"#button-80\").textContent"));278        }279        [PlaywrightTest("page-click.spec.ts", "should double click the button")]280        public async Task ShouldDoubleClickTheButton()281        {282            await Page.GotoAsync(Server.Prefix + "/input/button.html");283            await Page.EvaluateAsync(@"{284               window.double = false;285               const button = document.querySelector('button');286               button.addEventListener('dblclick', event => {287                 window.double = true;288               });289            }");290            var button = await Page.QuerySelectorAsync("button");291            await button.DblClickAsync();292            Assert.True(await Page.EvaluateAsync<bool>("double"));293            Assert.AreEqual("Clicked", await Page.EvaluateAsync<string>("result"));294        }295        [PlaywrightTest("page-click.spec.ts", "should click a partially obscured button")]296        public async Task ShouldClickAPartiallyObscuredButton()297        {298            await Page.GotoAsync(Server.Prefix + "/input/button.html");299            await Page.EvaluateAsync(@"{300                const button = document.querySelector('button');301                button.textContent = 'Some really long text that will go offscreen';302                button.style.position = 'absolute';303                button.style.left = '368px';304            }");305            await Page.ClickAsync("button");306            Assert.AreEqual("Clicked", await Page.EvaluateAsync<string>("result"));307        }308        [PlaywrightTest("page-click.spec.ts", "should click a rotated button")]309        public async Task ShouldClickARotatedButton()310        {311            await Page.GotoAsync(Server.Prefix + "/input/rotatedButton.html");312            await Page.ClickAsync("button");313            Assert.AreEqual("Clicked", await Page.EvaluateAsync<string>("result"));314        }315        [PlaywrightTest("page-click.spec.ts", "should fire contextmenu event on right click")]316        public async Task ShouldFireContextmenuEventOnRightClick()317        {318            await Page.GotoAsync(Server.Prefix + "/input/scrollable.html");319            await Page.ClickAsync("#button-8", new() { Button = MouseButton.Right });320            Assert.AreEqual("context menu", await Page.EvaluateAsync<string>("document.querySelector('#button-8').textContent"));321        }322        [PlaywrightTest("page-click.spec.ts", "should click links which cause navigation")]323        public async Task ShouldClickLinksWhichCauseNavigation()324        {325            await Page.SetContentAsync($"<a href=\"{Server.EmptyPage}\">empty.html</a>");326            // This await should not hang.327            await Page.ClickAsync("a");328        }329        [PlaywrightTest("page-click.spec.ts", "should click the button inside an iframe")]330        public async Task ShouldClickTheButtonInsideAnIframe()331        {332            await Page.GotoAsync(Server.EmptyPage);333            await Page.SetContentAsync("<div style=\"width:100px;height:100px\">spacer</div>");334            await FrameUtils.AttachFrameAsync(Page, "button-test", Server.Prefix + "/input/button.html");335            var frame = Page.FirstChildFrame();336            var button = await frame.QuerySelectorAsync("button");337            await button.ClickAsync();338            Assert.AreEqual("Clicked", await frame.EvaluateAsync<string>("window.result"));339        }340        [PlaywrightTest("page-click.spec.ts", "should click the button with fixed position inside an iframe")]341        [Skip(SkipAttribute.Targets.Chromium, SkipAttribute.Targets.Webkit)]342        public async Task ShouldClickTheButtonWithFixedPositionInsideAnIframe()343        {344            await Page.GotoAsync(Server.EmptyPage);345            await Page.SetViewportSizeAsync(500, 500);346            await Page.SetContentAsync("<div style=\"width:100px;height:2000px\">spacer</div>");347            await FrameUtils.AttachFrameAsync(Page, "button-test", Server.Prefix + "/input/button.html");348            var frame = Page.FirstChildFrame();349            await frame.EvalOnSelectorAsync("button", "button => button.style.setProperty('position', 'fixed')");350            await frame.ClickAsync("button");351            Assert.AreEqual("Clicked", await frame.EvaluateAsync<string>("window.result"));352        }353        [PlaywrightTest("page-click.spec.ts", "should click the button with deviceScaleFactor set")]354        public async Task ShouldClickTheButtonWithDeviceScaleFactorSet()355        {356            await using var context = await Browser.NewContextAsync(new()357            {358                ViewportSize = new()359                {360                    Width = 400,361                    Height = 400,362                },363                DeviceScaleFactor = 5,364            });365            var page = await context.NewPageAsync();366            Assert.AreEqual(5, await page.EvaluateAsync<int>("window.devicePixelRatio"));367            await page.SetContentAsync("<div style=\"width:100px;height:100px\">spacer</div>");368            await FrameUtils.AttachFrameAsync(page, "button-test", Server.Prefix + "/input/button.html");369            var frame = page.FirstChildFrame();370            var button = await frame.QuerySelectorAsync("button");371            await button.ClickAsync();372            Assert.AreEqual("Clicked", await frame.EvaluateAsync<string>("window.result"));373        }374        [PlaywrightTest("page-click.spec.ts", "should click the button with px border with relative point")]375        public async Task ShouldClickTheButtonWithPxBorderWithRelativePoint()376        {377            await Page.GotoAsync(Server.Prefix + "/input/button.html");378            await Page.EvalOnSelectorAsync("button", "button => button.style.borderWidth = '8px'");379            await Page.ClickAsync("button", new() { Position = new() { X = 20, Y = 10 } });380            Assert.AreEqual("Clicked", await Page.EvaluateAsync<string>("window.result"));381            // Safari reports border-relative offsetX/offsetY.382            Assert.AreEqual(TestConstants.IsWebKit ? 20 + 8 : 20, await Page.EvaluateAsync<int>("offsetX"));383            Assert.AreEqual(TestConstants.IsWebKit ? 10 + 8 : 10, await Page.EvaluateAsync<int>("offsetY"));384        }385        [PlaywrightTest("page-click.spec.ts", "should click the button with em border with offset")]386        public async Task ShouldClickTheButtonWithEmBorderWithOffset()387        {388            await Page.GotoAsync(Server.Prefix + "/input/button.html");389            await Page.EvalOnSelectorAsync("button", "button => button.style.borderWidth = '2em'");390            await Page.EvalOnSelectorAsync("button", "button => button.style.fontSize = '12px'");391            await Page.ClickAsync("button", new() { Position = new() { X = 20, Y = 10 } });392            Assert.AreEqual("Clicked", await Page.EvaluateAsync<string>("window.result"));393            // Safari reports border-relative offsetX/offsetY.394            Assert.AreEqual(TestConstants.IsWebKit ? 12 * 2 + 20 : 20, await Page.EvaluateAsync<int>("offsetX"));395            Assert.AreEqual(TestConstants.IsWebKit ? 12 * 2 + 10 : 10, await Page.EvaluateAsync<int>("offsetY"));396        }397        [PlaywrightTest("page-click.spec.ts", "should click a very large button with offset")]398        public async Task ShouldClickAVeryLargeButtonWithOffset()399        {400            await Page.GotoAsync(Server.Prefix + "/input/button.html");401            await Page.EvalOnSelectorAsync("button", "button => button.style.borderWidth = '8px'");402            await Page.EvalOnSelectorAsync("button", "button => button.style.height = button.style.width = '2000px'");403            await Page.ClickAsync("button", new() { Position = new() { X = 1900, Y = 1910 } });404            Assert.AreEqual("Clicked", await Page.EvaluateAsync<string>("window.result"));405            // Safari reports border-relative offsetX/offsetY.406            Assert.AreEqual(TestConstants.IsWebKit ? 1900 + 8 : 1900, await Page.EvaluateAsync<int>("offsetX"));407            Assert.AreEqual(TestConstants.IsWebKit ? 1910 + 8 : 1910, await Page.EvaluateAsync<int>("offsetY"));408        }409        [PlaywrightTest("page-click.spec.ts", "should click a button in scrolling container with offset")]410        public async Task ShouldClickAButtonInScrollingContainerWithOffset()411        {412            await Page.GotoAsync(Server.Prefix + "/input/button.html");413            await Page.EvalOnSelectorAsync("button", @"button => {414                const container = document.createElement('div');415                container.style.overflow = 'auto';416                container.style.width = '200px';417                container.style.height = '200px';418                button.parentElement.insertBefore(container, button);419                container.appendChild(button);420                button.style.height = '2000px';421                button.style.width = '2000px';422                button.style.borderWidth = '8px';423            }");424            await Page.ClickAsync("button", new() { Position = new() { X = 1900, Y = 1910 } });425            Assert.AreEqual("Clicked", await Page.EvaluateAsync<string>("window.result"));426            // Safari reports border-relative offsetX/offsetY.427            Assert.AreEqual(TestConstants.IsWebKit ? 1900 + 8 : 1900, await Page.EvaluateAsync<int>("offsetX"));428            Assert.AreEqual(TestConstants.IsWebKit ? 1910 + 8 : 1910, await Page.EvaluateAsync<int>("offsetY"));429        }430        [PlaywrightTest("page-click.spec.ts", "should click the button with offset with page scale")]431        [Skip(SkipAttribute.Targets.Firefox)]432        public async Task ShouldClickTheButtonWithOffsetWithPageScale()433        {434            await using var context = await Browser.NewContextAsync(new()435            {436                ViewportSize = new()437                {438                    Width = 400,439                    Height = 400,440                },441                IsMobile = true,442            });443            var page = await context.NewPageAsync();444            await page.GotoAsync(Server.Prefix + "/input/button.html");445            await page.EvalOnSelectorAsync("button", @"button => {446                button.style.borderWidth = '8px';447                document.body.style.margin = '0';448            }");449            await page.ClickAsync("button", new() { Position = new() { X = 20, Y = 10 } });450            Assert.AreEqual("Clicked", await page.EvaluateAsync<string>("window.result"));451            var point = BrowserName switch452            {453                "chromium" => new(27, 18),454                "webkit" => new(29, 19),455                _ => new Point(28, 18),456            };457            Assert.AreEqual(point.X, Convert.ToInt32(await page.EvaluateAsync<decimal>("pageX")));458            Assert.AreEqual(point.Y, Convert.ToInt32(await page.EvaluateAsync<decimal>("pageY")));459        }460        [PlaywrightTest("page-click.spec.ts", "should wait for stable position")]461        public async Task ShouldWaitForStablePosition()462        {463            await Page.GotoAsync(Server.Prefix + "/input/button.html");464            await Page.EvalOnSelectorAsync("button", @"button => {465                button.style.transition = 'margin 500ms linear 0s';466                button.style.marginLeft = '200px';467                button.style.borderWidth = '0';468                button.style.width = '200px';469                button.style.height = '20px';470                // Set display to 'block'- otherwise Firefox layouts with non-even471                // values on Linux.472                button.style.display = 'block';473                document.body.style.margin = '0';474            }");475            await Page.ClickAsync("button");476            Assert.AreEqual("Clicked", await Page.EvaluateAsync<string>("window.result"));477            Assert.AreEqual(300, await Page.EvaluateAsync<int>("pageX"));478            Assert.AreEqual(10, await Page.EvaluateAsync<int>("pageY"));479        }480        [PlaywrightTest("page-click.spec.ts", "should wait for becoming hit target")]481        public async Task ShouldWaitForBecomingHitTarget()482        {483            await Page.GotoAsync(Server.Prefix + "/input/button.html");484            await Page.EvalOnSelectorAsync("button", @"button => {485                button.style.borderWidth = '0';486                button.style.width = '200px';487                button.style.height = '20px';488                document.body.style.margin = '0';489                document.body.style.position = 'relative';490                const flyOver = document.createElement('div');491                flyOver.className = 'flyover';492                flyOver.style.position = 'absolute';493                flyOver.style.width = '400px';494                flyOver.style.height = '20px';495                flyOver.style.left = '-200px';496                flyOver.style.top = '0';497                flyOver.style.background = 'red';498                document.body.appendChild(flyOver);499            }");500            var clickTask = Page.ClickAsync("button");501            Assert.False(clickTask.IsCompleted);502            await Page.EvalOnSelectorAsync(".flyover", "flyOver => flyOver.style.left = '0'");503            await GiveItAChanceToClick(Page);504            Assert.False(clickTask.IsCompleted);505            await Page.EvalOnSelectorAsync(".flyover", "flyOver => flyOver.style.left = '200px'");506            await clickTask;507            Assert.AreEqual("Clicked", await Page.EvaluateAsync<string>("window.result"));508        }509        [PlaywrightTest("page-click.spec.ts", "should wait for becoming hit target with trial run")]510        public async Task ShouldWaitForBecomingHitTargetWithTrialRun()511        {512            await Page.GotoAsync(Server.Prefix + "/input/button.html");513            await Page.EvalOnSelectorAsync("button", @"button => {514                button.style.borderWidth = '0';515                button.style.width = '200px';516                button.style.height = '20px';517                document.body.style.margin = '0';518                document.body.style.position = 'relative';519                const flyOver = document.createElement('div');520                flyOver.className = 'flyover';521                flyOver.style.position = 'absolute';522                flyOver.style.width = '400px';523                flyOver.style.height = '20px';524                flyOver.style.left = '-200px';525                flyOver.style.top = '0';526                flyOver.style.background = 'red';527                document.body.appendChild(flyOver);528            }");529            var clickTask = Page.ClickAsync("button", new() { Trial = true });530            Assert.False(clickTask.IsCompleted);531            await Page.EvalOnSelectorAsync(".flyover", "flyOver => flyOver.style.left = '0'");532            await GiveItAChanceToClick(Page);533            Assert.False(clickTask.IsCompleted);534            await Page.EvalOnSelectorAsync(".flyover", "flyOver => flyOver.style.left = '200px'");535            await clickTask;536            Assert.AreEqual("Was not clicked", await Page.EvaluateAsync<string>("window.result"));537        }538        [PlaywrightTest("page-click.spec.ts", "trial run should work with short timeout")]539        public async Task TrialRunShouldWorkWithShortTimeout()540        {541            await Page.GotoAsync(Server.Prefix + "/input/button.html");542            await Page.QuerySelectorAsync("button");543            await Page.EvalOnSelectorAsync("button", @"button => button.disabled = true");544            var exception = await PlaywrightAssert.ThrowsAsync<TimeoutException>(() => Page.ClickAsync("button", new() { Trial = true, Timeout = 500 }));545            StringAssert.Contains("click action (trial run)", exception.Message);546            Assert.AreEqual("Was not clicked", await Page.EvaluateAsync<string>("window.result"));547        }548        [PlaywrightTest("page-click.spec.ts", "trial run should not click")]549        public async Task TrialRunShouldNotClick()550        {551            await Page.GotoAsync(Server.Prefix + "/input/button.html");552            await Page.ClickAsync("button", new() { Trial = true });553            Assert.AreEqual("Was not clicked", await Page.EvaluateAsync<string>("window.result"));554        }555        [PlaywrightTest("page-click.spec.ts", "trial run should not double click")]556        public async Task TrialRunShouldNotDoubleClick()557        {558            await Page.GotoAsync(Server.Prefix + "/input/button.html");559            await Page.EvaluateAsync(@"() => {560                window['double'] = false;561                const button = document.querySelector('button');562                button.addEventListener('dblclick', event => {563                    window['double'] = true;564                });565            }");566            await Page.DblClickAsync("button", new() { Trial = true });567            Assert.False(await Page.EvaluateAsync<bool>("double"));568            Assert.AreEqual("Was not clicked", await Page.EvaluateAsync<string>("window.result"));569        }570        [PlaywrightTest("page-click.spec.ts", "should fail when obscured and not waiting for hit target")]571        public async Task ShouldFailWhenObscuredAndNotWaitingForHitTarget()572        {573            await Page.GotoAsync(Server.Prefix + "/input/button.html");574            var button = await Page.QuerySelectorAsync("button");575            await Page.EvalOnSelectorAsync("button", @"button => {576                document.body.style.position = 'relative';577                const blocker = document.createElement('div');578                blocker.style.position = 'absolute';579                blocker.style.width = '400px';580                blocker.style.height = '20px';581                blocker.style.left = '0';582                blocker.style.top = '0';583                document.body.appendChild(blocker);584            }");585            await button.ClickAsync(new() { Force = true });586            Assert.AreEqual("Was not clicked", await Page.EvaluateAsync<string>("window.result"));587        }588        [PlaywrightTest("page-click.spec.ts", "should wait for button to be enabled")]589        public async Task ShouldWaitForButtonToBeEnabled()590        {591            await Page.SetContentAsync("<button onclick=\"javascript: window.__CLICKED = true;\" disabled><span>Click target</span></button>");592            var clickTask = Page.ClickAsync("text=Click target");593            await GiveItAChanceToClick(Page);594            Assert.Null(await Page.EvaluateAsync<bool?>("window.__CLICKED"));595            Assert.False(clickTask.IsCompleted);596            await Page.EvaluateAsync("() => document.querySelector('button').removeAttribute('disabled')");597            await clickTask;598            Assert.True(await Page.EvaluateAsync<bool?>("window.__CLICKED"));599        }600        [PlaywrightTest("page-click.spec.ts", "should wait for input to be enabled")]601        public async Task ShouldWaitForInputToBeEnabled()602        {603            await Page.SetContentAsync("<input onclick=\"javascript: window.__CLICKED = true;\" disabled>");604            var clickTask = Page.ClickAsync("input");605            await GiveItAChanceToClick(Page);606            Assert.Null(await Page.EvaluateAsync<bool?>("window.__CLICKED"));607            Assert.False(clickTask.IsCompleted);608            await Page.EvaluateAsync("() => document.querySelector('input').removeAttribute('disabled')");609            await clickTask;610            Assert.True(await Page.EvaluateAsync<bool?>("window.__CLICKED"));611        }612        [PlaywrightTest("page-click.spec.ts", "should wait for select to be enabled")]613        public async Task ShouldWaitForSelectToBeEnabled()614        {615            await Page.SetContentAsync("<select onclick=\"javascript: window.__CLICKED = true;\" disabled><option selected>Hello</option></select>");616            var clickTask = Page.ClickAsync("select");617            await GiveItAChanceToClick(Page);618            Assert.Null(await Page.EvaluateAsync<bool?>("window.__CLICKED"));619            Assert.False(clickTask.IsCompleted);620            await Page.EvaluateAsync("() => document.querySelector('select').removeAttribute('disabled')");621            await clickTask;622            Assert.True(await Page.EvaluateAsync<bool?>("window.__CLICKED"));623        }624        [PlaywrightTest("page-click.spec.ts", "should click disabled div")]625        public async Task ShouldClickDisabledDiv()626        {627            await Page.SetContentAsync("<div onclick=\"javascript: window.__CLICKED = true;\" disabled>Click target</div>");628            await Page.ClickAsync("text=Click target");629            Assert.True(await Page.EvaluateAsync<bool?>("window.__CLICKED"));630        }631        [PlaywrightTest("page-click.spec.ts", "should climb dom for inner label with pointer-events:none")]632        public async Task ShouldClimbDomForInnerLabelWithPointerEventsNone()633        {634            await Page.SetContentAsync("<button onclick=\"javascript: window.__CLICKED = true;\"><label style=\"pointer-events:none\">Click target</label></button>");635            await Page.ClickAsync("text=Click target");636            Assert.True(await Page.EvaluateAsync<bool?>("window.__CLICKED"));637        }638        [PlaywrightTest("page-click.spec.ts", "should climb up to [role=button]")]639        public async Task ShouldClimbUpToRoleButton()640        {641            await Page.SetContentAsync("<div role=button onclick=\"javascript: window.__CLICKED = true;\"><div style=\"pointer-events:none\"><span><div>Click target</div></span></div>");642            await Page.ClickAsync("text=Click target");643            Assert.True(await Page.EvaluateAsync<bool?>("window.__CLICKED"));644        }645        [PlaywrightTest("page-click.spec.ts", "should wait for BUTTON to be clickable when it has pointer-events:none")]646        public async Task ShouldWaitForButtonToBeClickableWhenItHasPointerEventsNone()647        {648            await Page.SetContentAsync("<button onclick=\"javascript: window.__CLICKED = true;\" style=\"pointer-events:none\"><span>Click target</span></button>");649            var clickTask = Page.ClickAsync("text=Click target");650            await GiveItAChanceToClick(Page);651            Assert.Null(await Page.EvaluateAsync<bool?>("window.__CLICKED"));652            Assert.False(clickTask.IsCompleted);653            await Page.EvaluateAsync("() => document.querySelector('button').style.removeProperty('pointer-events')");654            await clickTask;655            Assert.True(await Page.EvaluateAsync<bool?>("window.__CLICKED"));656        }657        [PlaywrightTest("page-click.spec.ts", "should wait for LABEL to be clickable when it has pointer-events:none")]658        public async Task ShouldWaitForLabelToBeClickableWhenItHasPointerEventsNone()659        {660            await Page.SetContentAsync("<label onclick=\"javascript: window.__CLICKED = true;\" style=\"pointer-events:none\"><span>Click target</span></label>");661            var clickTask = Page.ClickAsync("text=Click target");662            for (int i = 0; i < 5; ++i)663            {664                Assert.Null(await Page.EvaluateAsync<bool?>("window.__CLICKED"));665            }666            Assert.False(clickTask.IsCompleted);667            await Page.EvaluateAsync("() => document.querySelector('label').style.removeProperty('pointer-events')");668            await clickTask;669            Assert.True(await Page.EvaluateAsync<bool?>("window.__CLICKED"));670        }671        [PlaywrightTest("page-click.spec.ts", "should update modifiers correctly")]672        public async Task ShouldUpdateModifiersCorrectly()673        {674            await Page.GotoAsync(Server.Prefix + "/input/button.html");675            await Page.ClickAsync("button", new() { Modifiers = new[] { KeyboardModifier.Shift } });676            Assert.True(await Page.EvaluateAsync<bool>("shiftKey"));677            await Page.ClickAsync("button", new() { Modifiers = Array.Empty<KeyboardModifier>() });678            Assert.False(await Page.EvaluateAsync<bool>("shiftKey"));679            await Page.Keyboard.DownAsync("Shift");680            await Page.ClickAsync("button", new() { Modifiers = Array.Empty<KeyboardModifier>() });681            Assert.False(await Page.EvaluateAsync<bool>("shiftKey"));682            await Page.ClickAsync("button");683            Assert.True(await Page.EvaluateAsync<bool>("shiftKey"));684            await Page.Keyboard.UpAsync("Shift");685            await Page.ClickAsync("button");686            Assert.False(await Page.EvaluateAsync<bool>("shiftKey"));687        }688        [PlaywrightTest("page-click.spec.ts", "should click an offscreen element when scroll-behavior is smooth")]689        public async Task ShouldClickAnOffscreenElementWhenScrollBehaviorIsSmooth()690        {691            await Page.SetContentAsync(@$"692            <div style=""border: 1px solid black; height: 500px; overflow: auto; width: 500px; scroll-behavior: smooth"">693                <button style=""margin-top: 2000px"" onClick=""window.clicked = true"" >hi</button>694            </div>");695            await Page.ClickAsync("button");696            Assert.True(await Page.EvaluateAsync<bool>("window.clicked"));697        }698        [PlaywrightTest("page-click.spec.ts", "should report nice error when element is detached and force-clicked")]699        public async Task ShouldReportNiceErrorWhenElementIsDetachedAndForceClicked()700        {701            await Page.GotoAsync(Server.Prefix + "/input/animating-button.html");702            await Page.EvaluateAsync("() => addButton()");703            var handle = await Page.QuerySelectorAsync("button");704            await Page.EvaluateAsync("() => stopButton(true)");705            var clickTask = handle.ClickAsync(new() { Force = true });706            var exception = await PlaywrightAssert.ThrowsAsync<PlaywrightException>(() => clickTask);707            Assert.Null(await Page.EvaluateAsync<bool?>("window.clicked"));708            StringAssert.Contains("Element is not attached to the DOM", exception.Message);709        }710        [PlaywrightTest("page-click.spec.ts", "should fail when element detaches after animation")]711        public async Task ShouldFailWhenElementDetachesAfterAnimation()712        {713            await Page.GotoAsync(Server.Prefix + "/input/animating-button.html");714            await Page.EvaluateAsync("() => addButton()");715            var handle = await Page.QuerySelectorAsync("button");716            var clickTask = handle.ClickAsync();717            await Page.EvaluateAsync("() => stopButton(true)");718            var exception = await PlaywrightAssert.ThrowsAsync<PlaywrightException>(() => clickTask);719            Assert.Null(await Page.EvaluateAsync<bool?>("window.clicked"));720            StringAssert.Contains("Element is not attached to the DOM", exception.Message);721        }722        [PlaywrightTest("page-click.spec.ts", "should retry when element detaches after animation")]723        public async Task ShouldRetryWhenElementDetachesAfterAnimation()724        {725            await Page.GotoAsync(Server.Prefix + "/input/animating-button.html");726            await Page.EvaluateAsync("() => addButton()");727            var clickTask = Page.ClickAsync("button");728            Assert.False(clickTask.IsCompleted);729            Assert.Null(await Page.EvaluateAsync<bool?>("window.clicked"));730            await Page.EvaluateAsync("() => stopButton(true)");731            await Page.EvaluateAsync("() => addButton()");732            Assert.False(clickTask.IsCompleted);733            Assert.Null(await Page.EvaluateAsync<bool?>("window.clicked"));734            await Page.EvaluateAsync("() => stopButton(true)");735            await Page.EvaluateAsync("() => addButton()");736            Assert.False(clickTask.IsCompleted);737            Assert.Null(await Page.EvaluateAsync<bool?>("window.clicked"));738            await Page.EvaluateAsync("() => stopButton(false)");739            await clickTask;740            Assert.True(await Page.EvaluateAsync<bool?>("window.clicked"));741        }742        [PlaywrightTest("page-click.spec.ts", "should retry when element is animating from outside the viewport")]743        public async Task ShouldRetryWhenElementIsAnimatingFromOutsideTheViewport()744        {745            await Page.SetContentAsync($@"746                <style>747                  @keyframes move {{748                    from {{ left: -300px; }}749                    to {{ left: 0; }}750                  }}751                  button {{752                    position: absolute;753                    left: -300px;754                    top: 0;755                    bottom: 0;756                    width: 200px;757                  }}758                  button.animated {{759                    animation: 1s linear 1s move forwards;760                  }}761                  </style>762                  <div style=""position: relative; width: 300px; height: 300px;"">763                     <button onclick =""window.clicked=true""></button>764                  </div>");765            var handle = await Page.QuerySelectorAsync("button");766            var clickTask = handle.ClickAsync();767            await handle.EvaluateAsync("button => button.className = 'animated'");768            await clickTask;769            Assert.True(await Page.EvaluateAsync<bool?>("window.clicked"));770        }771        [PlaywrightTest("page-click.spec.ts", "should retry when element is animating from outside the viewport with force")]772        public async Task ShouldRetryWhenElementIsAnimatingFromOutsideTheViewportWithForce()773        {774            await Page.SetContentAsync($@"775                <style>776                  @keyframes move {{777                    from {{ left: -300px; }}778                    to {{ left: 0; }}779                  }}780                  button {{781                    position: absolute;782                    left: -300px;783                    top: 0;784                    bottom: 0;785                    width: 200px;786                  }}787                  button.animated {{788                    animation: 1s linear 1s move forwards;789                  }}790                  </style>791                  <div style=""position: relative; width: 300px; height: 300px;"">792                     <button onclick =""window.clicked=true""></button>793                  </div>");794            var handle = await Page.QuerySelectorAsync("button");795            var clickTask = handle.ClickAsync(new() { Force = true });796            await handle.EvaluateAsync("button => button.className = 'animated'");797            var exception = await PlaywrightAssert.ThrowsAsync<PlaywrightException>(() => clickTask);798            Assert.Null(await Page.EvaluateAsync<bool?>("window.clicked"));799            StringAssert.Contains("Element is outside of the viewport", exception.Message);800        }801        [PlaywrightTest("page-click.spec.ts", "should dispatch microtasks in order")]802        public async Task ShouldDispatchMicrotasksInOrder()803        {804            await Page.SetContentAsync($@"805                <button id=button>Click me</button>806                <script>807                let mutationCount = 0;808                const observer = new MutationObserver((mutationsList, observer) => {{809                    for(let mutation of mutationsList)810                    ++mutationCount;811                }});812                observer.observe(document.body, {{ attributes: true, childList: true, subtree: true }});813                button.addEventListener('mousedown', () => {{814                    mutationCount = 0;815                    document.body.appendChild(document.createElement('div'));816                }});817                button.addEventListener('mouseup', () => {{818                    window.result = mutationCount;819                }});820                </script>");821            await Page.ClickAsync("button");822            Assert.AreEqual(1, await Page.EvaluateAsync<int>("window.result"));823        }824        [PlaywrightTest("page-click.spec.ts", "should click the button when window.innerWidth is corrupted")]825        public async Task ShouldClickTheButtonWhenWindowInnerWidthIsCorrupted()826        {827            await Page.GotoAsync(Server.Prefix + "/input/button.html");828            await Page.EvaluateAsync(@"() => window.innerWith = 0");829            await Page.ClickAsync("button");830            Assert.AreEqual("Clicked", await Page.EvaluateAsync<string>("result"));831        }832        private async Task GiveItAChanceToClick(IPage page)833        {834            for (int i = 0; i < 5; i++)835            {836                await page.EvaluateAsync("() => new Promise(f => requestAnimationFrame(() => requestAnimationFrame(f)))");837            }838        }839    }...ShouldClickTheButton
Using AI Code Generation
1var playwright = await Playwright.CreateAsync();2var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions3{4});5var context = await browser.NewContextAsync();6var page = await context.NewPageAsync();7await page.ClickAsync("text=Sign in");8await page.ClickAsync("text=Sign in");9await page.ClickAsync("css=[placeholder=\"Email or phone\"]");10await page.FillAsync("css=[placeholder=\"Email or phone\"]", "ShouldClickTheButton
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        await page.ClickAsync("text=Images");10        await page.ClickAsync("text=Maps");11        await page.ClickAsync("text=News");ShouldClickTheButton
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Text;4using System.Threading.Tasks;5using Microsoft.Playwright;6using Microsoft.Playwright.Tests;7using Xunit;8using Xunit.Abstractions;9{10    {11        public PageClickTests(ITestOutputHelper output) : base(output)12        {13        }14        [PlaywrightTest("page-click.spec.ts", "should click the button")]15        [Fact(Timeout = PlaywrightSharp.Playwright.DefaultTimeout)]16        public async Task ShouldClickTheButton()17        {18            await Page.GotoAsync(Server.Prefix + "/input/button.html");19            await Page.ClickAsync("button");20            Assert.Equal("Clicked", await Page.EvaluateAsync<string>("() => result"));21        }22    }23}24using System;25using System.Collections.Generic;26using System.Text;27using System.Threading.Tasks;28using Microsoft.Playwright;29using Microsoft.Playwright.Tests;30using Xunit;31using Xunit.Abstractions;32{33    {34        public PageClickTests(ITestOutputHelper output) : base(output)35        {36        }37        [PlaywrightTest("page-click.spec.ts", "should click the button")]38        [Fact(Timeout = PlaywrightSharp.Playwright.DefaultTimeout)]39        public async Task ShouldClickTheButton()40        {41            await Page.GotoAsync(Server.Prefix + "/input/button.html");42            await Page.ClickAsync("button");43            Assert.Equal("Clicked", await Page.EvaluateAsync<string>("() => result"));44        }45    }46}47using System;48using System.Collections.Generic;49using System.Text;50using System.Threading.Tasks;51using Microsoft.Playwright;52using Microsoft.Playwright.Tests;53using Xunit;54using Xunit.Abstractions;55{56    {57        public PageClickTests(ITestOutputHelper output) : base(output)58        {59        }60        [PlaywrightTest("page-click.spec.ts", "should click the button")]61        [Fact(Timeout = PlaywrightSharp.Playwright.DefaultTimeout)]ShouldClickTheButton
Using AI Code Generation
1var playwright = await Playwright.CreateAsync();2var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions3{4});5var context = await browser.NewContextAsync();6var page = await context.NewPageAsync();7await page.ClickAsync("text=I'm Feeling Lucky");8await page.ClickAsync("css=button");9await browser.CloseAsync();10await playwright.StopAsync();11var playwright = await Playwright.CreateAsync();12var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions13{14});15var context = await browser.NewContextAsync();16var page = await context.NewPageAsync();17await page.ClickAsync("text=I'm Feeling Lucky");18await page.ClickAsync("css=button");19await browser.CloseAsync();20await playwright.StopAsync();21var playwright = await Playwright.CreateAsync();22var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions23{24});25var context = await browser.NewContextAsync();26var page = await context.NewPageAsync();27await page.ClickAsync("text=I'm Feeling Lucky");28await page.ClickAsync("css=button");29await browser.CloseAsync();30await playwright.StopAsync();31var playwright = await Playwright.CreateAsync();32var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions33{34});35var context = await browser.NewContextAsync();36var page = await context.NewPageAsync();37await page.ClickAsync("text=I'm Feeling Lucky");38await page.ClickAsync("css=button");39await browser.CloseAsync();40await playwright.StopAsync();41var playwright = await Playwright.CreateAsync();ShouldClickTheButton
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6using Microsoft.Playwright;7using Microsoft.Playwright.Tests;8using NUnit.Framework;9using NUnit.Framework.Internal;10{11    {12        [PlaywrightTest("page-click.spec.ts", "should click the button")]13        [Test, Timeout(TestConstants.DefaultTestTimeout)]14        public async Task ShouldClickTheButton()15        {16            await Page.GotoAsync(Server.Prefix + "/input/button.html");17            await Page.ClickAsync("button");18            Assert.AreEqual("Clicked", await Page.EvaluateAsync<string>("() => result"));19        }20    }21}22using System;23using System.Collections.Generic;24using System.Linq;25using System.Text;26using System.Threading.Tasks;27using Microsoft.Playwright;28using Microsoft.Playwright.Tests;29using NUnit.Framework;30using NUnit.Framework.Internal;31{32    {33        [PlaywrightTest("page-click.spec.ts", "should click the button")]34        [Test, Timeout(TestConstants.DefaultTestTimeout)]35        public async Task ShouldClickTheButton()36        {37            await Page.GotoAsync(Server.Prefix + "/input/button.html");38            await Page.ClickAsync("button");39            Assert.AreEqual("Clicked", await Page.EvaluateAsync<string>("() => result"));40        }41    }42}43using System;44using System.Collections.Generic;45using System.Linq;46using System.Text;47using System.Threading.Tasks;48using Microsoft.Playwright;49using Microsoft.Playwright.Tests;50using NUnit.Framework;51using NUnit.Framework.Internal;52{53    {54        [PlaywrightTest("page-click.spec.ts", "should click the button")]55        [Test, Timeout(TestConstants.DefaultTestTimeout)]56        public async Task ShouldClickTheButton()57        {58            await Page.GotoAsync(Server.Prefix + "/input/button.html");59            await Page.ClickAsync("button");60            Assert.AreEqual("Clicked", await Page.EvaluateAsync<string>("() => result"));61        }62    }63}ShouldClickTheButton
Using AI Code Generation
1using Microsoft.Playwright.Tests;2var assembly = Assembly.Load("Microsoft.Playwright.Tests");3var type = assembly.GetType("Microsoft.Playwright.Tests.PageClickTests");4var method = type.GetMethod("ShouldClickTheButton");5var parameters = new object[] { };6var result = method.Invoke(null, parameters);7Console.WriteLine(result);8using Microsoft.Playwright.Tests;9var assembly = Assembly.Load("Microsoft.Playwright.Tests");10var type = assembly.GetType("Microsoft.Playwright.Tests.PageClickTests");11var method = type.GetMethod("ShouldClickTheButton");12var parameters = new object[] { };13var result = method.Invoke(null, parameters);14Console.WriteLine(result);15using Microsoft.Playwright.Tests;16var assembly = Assembly.Load("Microsoft.Playwright.Tests");17var type = assembly.GetType("Microsoft.Playwright.Tests.PageClickTests");18var method = type.GetMethod("ShouldClickTheButton");19var parameters = new object[] { };20var result = method.Invoke(null, parameters);21Console.WriteLine(result);22using Microsoft.Playwright.Tests;23var assembly = Assembly.Load("Microsoft.Playwright.Tests");24var type = assembly.GetType("Microsoft.Playwright.Tests.PageClickTests");25var method = type.GetMethod("ShouldClickTheButton");26var parameters = new object[] { };27var result = method.Invoke(null, parameters);28Console.WriteLine(result);29using Microsoft.Playwright.Tests;30var assembly = Assembly.Load("Microsoft.Playwright.Tests");31var type = assembly.GetType("Microsoft.Playwright.Tests.PageClickTests");32var method = type.GetMethod("ShouldClickTheButton");33var parameters = new object[] { };34var result = method.Invoke(null, parameters);35Console.WriteLine(result);ShouldClickTheButton
Using AI Code Generation
1var playwright = await Playwright.CreateAsync();2var browser = await playwright.Chromium.LaunchAsync(new LaunchOptions3{4});5var context = await browser.NewContextAsync();6var page = await context.NewPageAsync();7await page.ClickAsync("text=Google Search");8await page.ClickAsync("text=Images");9await page.ClickAsync("text=Maps");10await page.ClickAsync("text=Play");11await page.ClickAsync("text=YouTube");12await page.ClickAsync("text=News");13await page.ClickAsync("text=Gmail");14await page.ClickAsync("text=Drive");15await page.ClickAsync("text=Calendar");16await page.ClickAsync("text=Translate");17await page.ClickAsync("text=Photos");18await page.ClickAsync("text=Shopping");19await page.ClickAsync("text=More");20await page.ClickAsync("text=Advertising");21await page.ClickAsync("text=Business");22await page.ClickAsync("text=How Search works");23await page.ClickAsync("text=Privacy");24await page.ClickAsync("text=Terms");25await page.ClickAsync("text=Settings");26await page.ClickAsync("text=Sign in");27await page.ClickAsync("text=Images");28await page.ClickAsync("text=Maps");29await page.ClickAsync("text=Play");30await page.ClickAsync("text=YouTube");31await page.ClickAsync("text=News");32await page.ClickAsync("text=Gmail");33await page.ClickAsync("text=Drive");34await page.ClickAsync("text=Calendar");35await page.ClickAsync("text=Translate");36await page.ClickAsync("text=Photos");37await page.ClickAsync("text=Shopping");38await page.ClickAsync("text=More");39await page.ClickAsync("text=Advertising");40await page.ClickAsync("text=Business");41await page.ClickAsync("text=How Search works");42await page.ClickAsync("text=Privacy");43await page.ClickAsync("text=Terms");44await page.ClickAsync("text=Settings");45await page.ClickAsync("text=Sign in");46await page.ClickAsync("text=Images");47await page.ClickAsync("text=Maps");48await page.ClickAsync("text=Play");49await page.ClickAsync("text=YouTube");50await page.ClickAsync("text=News");51await page.ClickAsync("text=Gmail");52await page.ClickAsync("text=Drive");53await page.ClickAsync("text=Calendar");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!!
