public async Task ShouldReportFrameName() { await FrameUtils.AttachFrameAsync(Page, "theFrameId", TestConstants.EmptyPage); await Page.EvaluateAsync(@"url => { const frame = document.createElement('iframe'); frame.name = 'theFrameName'; frame.src = url; document.body.appendChild(frame); return new Promise(x => frame.onload = x); }", TestConstants.EmptyPage); Assert.Empty(Page.Frames[0].Name); Assert.Equal("theFrameId", Page.Frames[1].Name); Assert.Equal("theFrameName", Page.Frames[2].Name); }
public async Task PageWaitForSelectorAsyncIsShortcutForMainFrame() { await Page.GoToAsync(TestConstants.EmptyPage); await FrameUtils.AttachFrameAsync(Page, "frame1", TestConstants.EmptyPage); var otherFrame = Page.FirstChildFrame(); var watchdog = Page.WaitForSelectorAsync("div", WaitForState.Attached); await otherFrame.EvaluateAsync(AddElement, "div"); await Page.EvaluateAsync(AddElement, "div"); var eHandle = await watchdog; Assert.Equal(Page.MainFrame, await eHandle.GetOwnerFrameAsync()); }
public async Task ShouldRunInSpecifiedFrameXPath() { await FrameUtils.AttachFrameAsync(Page, "frame1", TestConstants.EmptyPage); await FrameUtils.AttachFrameAsync(Page, "frame2", TestConstants.EmptyPage); var frame1 = Page.Frames.First(f => f.Name == "frame1"); var frame2 = Page.Frames.First(f => f.Name == "frame2"); var waitForXPathPromise = frame2.WaitForSelectorAsync("//div", WaitForState.Attached); await frame1.EvaluateAsync(AddElement, "div"); await frame2.EvaluateAsync(AddElement, "div"); var eHandle = await waitForXPathPromise; Assert.Equal(frame2, await eHandle.GetOwnerFrameAsync()); }
public async Task ShouldWorkInCrossProcessIframe() { await using var context = await Browser.NewContextAsync(new BrowserContextOptions { ColorScheme = ColorScheme.Dark, }); var page = await context.NewPageAsync(); await page.GoToAsync(TestConstants.EmptyPage); await FrameUtils.AttachFrameAsync(page, "frame1", TestConstants.CrossProcessHttpPrefix + "/empty.html"); var frame = page.Frames[1]; Assert.True(await frame.EvaluateAsync <bool>("() => matchMedia('(prefers-color-scheme: dark)').matches")); }
public async Task ShouldReportDifferentFrameInstanceWhenFrameReAttaches() { var frame1 = await FrameUtils.AttachFrameAsync(Page, "frame1", TestConstants.EmptyPage); await Page.EvaluateAsync(@"() => { window.frame = document.querySelector('#frame1'); window.frame.remove(); }"); Assert.True(frame1.IsDetached); var(frame2, _) = await TaskUtils.WhenAll( Page.WaitForEventAsync(PageEvent.FrameNavigated), Page.EvaluateAsync("() => document.body.appendChild(window.frame)") ); Assert.False(frame2.Frame.IsDetached); Assert.NotSame(frame1, frame2); }
public async Task ShouldClickTheButtonWithFixedPositionInsideAnIframe() { await Page.GoToAsync(TestConstants.EmptyPage); await Page.SetViewportSizeAsync(new ViewportSize { Width = 500, Height = 500 }); await Page.SetContentAsync("<div style=\"width:100px;height:2000px\">spacer</div>"); await FrameUtils.AttachFrameAsync(Page, "button-test", TestConstants.ServerUrl + "/input/button.html"); var frame = Page.FirstChildFrame(); await frame.EvalOnSelectorAsync("button", "button => button.style.setProperty('position', 'fixed')"); await frame.ClickAsync("button"); Assert.Equal("Clicked", await frame.EvaluateAsync <string>("window.result")); }
public async Task ShouldWorkForSubframes() { await using (var context = await Browser.NewContextAsync()) { var page = await context.NewPageAsync(); Assert.Contains("Mozilla", await page.EvaluateAsync <string>("navigator.userAgent")); } await using (var context = await Browser.NewContextAsync(new BrowserContextOptions { UserAgent = "foobar" })) { var page = await context.NewPageAsync(); var(userAgent, _) = await TaskUtils.WhenAll( Server.WaitForRequest <string>("/empty.html", (request) => request.Headers["user-agent"]), FrameUtils.AttachFrameAsync(page, "frame1", TestConstants.EmptyPage)); Assert.Equal("foobar", userAgent); } }
public async Task ShouldBeIsolatedBetweenFrames() { await Page.GoToAsync(TestConstants.EmptyPage); await FrameUtils.AttachFrameAsync(Page, "frame1", TestConstants.EmptyPage); Assert.Equal(2, Page.Frames.Length); var frames = Page.Frames; Assert.NotSame(frames[0], frames[1]); await TaskUtils.WhenAll( frames[0].EvaluateAsync("() => window.a = 1"), frames[1].EvaluateAsync("() => window.a = 2") ); var(result1, result2) = await TaskUtils.WhenAll( frames[0].EvaluateAsync <int>("() => window.a"), frames[1].EvaluateAsync <int>("() => window.a") ); Assert.Equal(1, result1); Assert.Equal(2, result2); }
public async Task ShouldHandleNestedFrames() { await Page.GoToAsync(TestConstants.ServerUrl + "/frames/nested-frames.html"); Assert.Equal(TestConstants.NestedFramesDumpResult, FrameUtils.DumpFrames(Page.MainFrame)); }