所以在从Selenium .net移动到PlayWrightSharp的过程中,我所做的就是得到当前的句柄,并能够在选项卡之间切换…我无法在playwrightsharp中找到一个明确的方法来做到这一点。
的例子:硒
public IWebDriver ReturnlastKnownPageSession(IWebDriver _driver)
{
return _driver.SwitchTo().Window(_driver.WindowHandles.Last());
}
PlayWriteSharp:
[PlaywrightTest("browsercontext-basic.spec.ts", "should return all of the pages")]
[Fact(Timeout = TestConstants.DefaultTestTimeout)]
public async Task ShouldReturnAllOfThePages()
{
await using var context = await Browser.NewContextAsync();
var page = await context.NewPageAsync();
var second = await context.NewPageAsync();
Assert.Equal(2, context.Pages.Length);
Assert.Contains(page, context.Pages);
Assert.Contains(second, context.Pages);
}
必须有类似于selenium的东西来获取当前浏览器并在一次调用中找到所有页面并能够在选项卡之间切换
有什么想法吗?
在《剧作家》中有一点不同。
创建一个新的上下文:
context = await browser.newContext();
和该上下文中的一个或多个页面:
let pages = [];
pages.push(await context.newPage());
pages.push(await context.newPage());
如果你不想共享cookie,缓存,你创建多个上下文。上下文之间不共享cookie和缓存,它们是浏览器实例内的类似于隐身的会话。
阅读:
- https://playwright.dev/docs/core-concepts browser-contexts
- https://playwright.dev/docs/api/class-browser?_highlight=newc browsernewcontextoptions
- https://playwright.dev/docs/api/class-browser?_highlight=newc browsernewpageoptions
是的,我至少找到了在相同上下文中查找其他选项卡的方法
var popTask = await browserContext.WaitForEventAsync(ContextEvent.Page);
你可以用@pavelsaman写的东西,用List代替数组,然后您可以执行以下操作:
var pages = new List<IPage>();
pages.Add(await context.newPage())
pages[index]会给你正常的页面。