4 回答
TA贡献2036条经验 获得超8个赞
假设"launch-app-from-dashboard"
正在创建一个新的页面标签,您可以使用以下模式在新页面上运行后续代码行。
// Get page after a specific action (e.g. clicking a link)
const [newPage] = await Promise.all([
context.waitForEvent('page'),
page.click('a[target="_blank"]') // Opens a new tab
])
await newPage.waitForLoadState();
console.log(await newPage.title());
page.bringToFront
由于您无头运行,因此使用( docs )切换浏览器中的可见选项卡也可能很有用。
TA贡献1821条经验 获得超6个赞
假设您只创建了一个页面(通过浏览器上下文),但由于某种原因,打开了新页面/选项卡。您可以通过 : 获得所有页面的列表context.pages
,现在该列表的每个元素代表一个<class 'playwright.async_api._generated.Page'>对象。所以,现在您可以将每个页面分配给任何变量并访问它。(例如。page2 = context.pages[1]
)
TA贡献1877条经验 获得超1个赞
browserContext?.pages() 是一个数组,其中包含您的应用程序打开的选项卡,您可以从那里使用临时页面进行切换,一旦完成验证,您就可以切换回来。
playwright.pageMain: Page = await playwright.Context.newPage();
playwright.pageTemp: Page;
// Save your current page to Temp
playwright.pageTemp = playwright.pageMain;
// Make the new tab launched your main page
playwright.pageMain = playwright.browserContext?.pages()[1];
expect(await playwright.pageMain.title()).toBe('Tab Title');
TA贡献1798条经验 获得超7个赞
it('Open a new tab and check the title', async function () {
await page.click(button, { button: "middle" }); //to open an another tab
await page.waitForTimeout(); // wait for page loading
let pages = await context.pages();
expect(await pages[1].title()).equal('Title'); /to compare the title of the second page
})
添加回答
举报