// Here we are working in the initial page
await page.locator("#locator").type("This happens in the initial page..");
/* When "Ok" is clicked the test waits for a new page event and assigns to new page object to a variable called newPage
After this point we want the test to continue in the new tab,
so we'll have to use the newly defined newPage variable when working on that tab
*/
const [newPage] = await Promise.all([
context.waitForEvent('page'),
page.locator("span >> text=Ok").click()
])
await newPage.waitForLoadState();
console.log("A new tab opened and the url of the tab is: " + newPage.url());
// Here we work with the newPage object and we can perform actions like with page
await newPage.locator("#Description").type("This happens in a new tab!");
5条答案
按热度按时间sf6xfgos1#
没有像Selenium这样的Switch操作。您可以使用
waitForPage
或waitForPopup
函数。您只需要知道触发新页面的操作是什么。例如context
类还有一个pages()
函数,它返回所有打开的页面。i5desfxk2#
它对我来说很好:
但你也可以这样尝试:
93ze6v8z3#
扩展@hardkoded的答案,我得到了一个错误,现在使用这个:
到目前为止都符合我的目的
cczfrluj4#
您要做的是在新页面中继续测试。官方文档:https://playwright.dev/docs/pages#handling-new-pages
下面是一个例子,我们首先在初始的“页面”中工作,然后单击一个按钮后,我们希望在一个新的标签中继续我们的测试,我们定义为“newPage”:
ax6ht2ek5#
下面的代码片段在选项卡之间工作。