在pyppeteer中获取新选项卡的URL

2022-03-11 00:00:00 python pyppeteer puppeteer

问题描述

我在苦苦思索如何:

  1. 检测何时在Chrome中打开新选项卡(例如,通过单击页面上的某些内容)
  2. 获取新打开的选项卡的URL。

我使用以下命令将pyppeteer连接到我当前的Chrome实例:

browser = await pyppeteer.connect(browserURL='http://127.0.0.1:9222')

手动创建选项卡时,获取URL没有问题。

url = 'https://www.google.com'
page = await browser.newPage()
await page.goto(url)
current_url = await page.evaluate('window.location.href', force_expr=True)

我读到有一种方法可以在原始的木偶操纵者中使用‘targetCreated’来实现这一点:

browser.on('targetcreated', function(){
    console.log('New Tab Created');
})

所以我在问我如何才能做这样的事情:

// listen for new tab
newTab = browser.on('targetcreated') // This is where I'm stuck
// get url
current_url = await newTab.evaluate('window.location.href', force_expr=True)

我希望这一切都有意义!


解决方案

1.检测新选项卡

from pyppeteer import launch

browser = await launch({"headless": False})
page = await browser.newPage()
await page.goto("http://google.com")


len(await browser.pages()) # Should be 2 because default page and created page

page2 = await browser.newPage()
await page2.goto("http://yahoo.com")
len(await browser.pages()) # Should be 3 now
要检测新选项卡,请选中await browser.pages() 您可以访问每个页面:

pages = await browser.pages()

这就把我们带到.

2.获取新打开选项卡的url

for p in pages:
   print (p.url)
这些是为您的特定问题找出解决方案的构建块。检查您有多少页,如果有更改,请使用新页执行某些操作

相关文章