首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用playwright-python处理多个页面?

如何使用playwright-python处理多个页面?
EN

Stack Overflow用户
提问于 2020-09-21 21:50:52
回答 2查看 1.8K关注 0票数 3

如何使用playwright-python监听新页面

在JavaScript中,它将被记录为:

代码语言:javascript
复制
const playwright = require("playwright");

(async () => {
  const browser = await playwright.chromium.launch();
  const context = await browser.newContext();
  const page = await context.newPage();
  context.on("page", async newPage => {
    console.log("newPage", await newPage.title())
  })

  // emulate some opening in a new tab or popup
  await page.evaluate(() => window.open('https://google.com', '_blank'))
  // Keep in mind to have some blocking action there so that the browser won't be closed. In this case we are just waiting 2 seconds.
  await page.waitForTimeout(2000)
  await browser.close();
})();

在Python中变为

代码语言:javascript
复制
from playwright import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(
        headless=False,
        executablePath='C:/Program Files/Google/Chrome/Application/chrome.exe'
    )
    context = browser.newContext()
    page = context.newPage()

'''
how to do in Python?
  context.on("page", async newPage => {
    console.log("newPage", await newPage.title())
  })

  // emulate some opening in a new tab or popup
  await page.evaluate(() => window.open('https://google.com', '_blank'))
'''

    page.waitForTimeout(2000)
    browser.close()
EN

回答 2

Stack Overflow用户

发布于 2021-06-09 21:18:48

如果您需要在没有事件侦听器的情况下处理新页面(即通过单击链接打开新选项卡),您可以尝试以下代码:

代码语言:javascript
复制
    from playwright import sync_playwright

    with sync_playwright() as p:
        browser = p.chromium.launch()
        context = browser.newContext()
        page = context.newPage()
        page.goto('<site url>')
        with context.expect_page() as tab:
            page.click('.newTabByLink')
        # do some steps
        ...
        tab.close()
        
        browser.close()
票数 3
EN

Stack Overflow用户

发布于 2020-09-21 22:12:44

感谢@hardkoded,以下是解决方案:

代码语言:javascript
复制
from playwright import sync_playwright

def newPage(page):
   print("newPage() page title:", page.title())

with sync_playwright() as p:
    browser = p.chromium.launch(
        headless=False,
        executablePath='C:/Program Files/Google/Chrome/Application/chrome.exe'
    )
    context = browser.newContext()
    page = context.newPage()

    context.on("page", lambda page: newPage(page))

    page.evaluate('''() => {
        window.open('https://google.com', '_blank')
    }''')
       
    page.waitForTimeout(2000)
    browser.close()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63993712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档