在pyppeteer中获取新选项卡的URL
问题描述
我在苦苦思索如何:
- 检测何时在Chrome中打开新选项卡(例如,通过单击页面上的某些内容)
- 获取新打开的选项卡的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)
这些是为您的特定问题找出解决方案的构建块。检查您有多少页,如果有更改,请使用新页执行某些操作
相关文章