我正在寻找一个更简单的解决方案,以目前的情况。例如,你打开谷歌(任何其他网站),你想通过点击按钮(ex. Gmail)-打开这个页面在新的标签页使用剧作家。
let browser, page, context;
describe('Check the main page view', function () {
before(async () => {
for (const browserType of ['chromium']) {
browser = await playwright[browserType].launch({headless: false});
context = await browser.newContext();
page = await context.newPage();
await page.goto(baseUrl);
}
});
after(async function () {
browser.close();
});
await page.click(tax);
const taxPage = await page.getAttribute(taxAccount, 'href');
const [newPage] = await Promise.all([
context.waitForEvent('page'),
page.evaluate((taxPage) => window.open(taxPage, '_blank'), taxPage)]);
await newPage.waitForLoadState();
console.log(await newPage.title());
4条答案
按热度按时间brccelvz1#
要在使用Playwright单击按钮时打开一个新标签页,可以使用
evaluate
和waitForEvent
函数在页面上下文中执行JavaScript,并等待创建新页面。下面是一个示例,说明如何执行此操作:在这里,它单击带有选择器
#gmail
的按钮,然后使用evaluate
函数执行JavaScript,打开一个URL为https://gmail.com
的新选项卡,然后代码使用waitForEvent
函数等待page
事件被触发,表示已经创建了一个新页面。新页面存储在一个变量中,这段代码使用title
函数打印新页面的标题。这段代码应该在单击按钮时打开一个新选项卡,并打印在新选项卡中打开的页面的标题。uxhixvfz2#
7gs2gvoe3#
你可以将一个
modifier
传递给click
函数,在macos中它是Meta
,因为你会用cmd+click打开一个新的标签页,在windows中它是Control
。n8ghc7c14#
在我的情况下,我点击一个弹出窗口中的链接,如(*ctrl +点击链接 *),然后它打开一个新的选项卡,并在该新选项卡上工作