问题描述
我正在努力弄清楚如何:
我已通过以下方式将 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)
我已经读到有一种方法可以在原始 puppeteer 中使用“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)
我希望一切都有意义!
解决方法
您需要像在 JavaScript 示例中一样添加回调函数:
>>> from pyppeteer import launch
>>> def callback(target):
... print(target.url)
...
>>> browser = await launch()
>>> browser.on("targetcreated",callback)
<function callback at 0x7f408a767a60>
>>> page = await browser.newPage()
about:blank
当使用 about:blank
打开一个新的空白标签时打印了 browser.newPage()
url。
Pyppeteer 在幕后使用 pyee.BaseEventEmitter.on。