使用 pyppeteer 可以通过.pages函数获取所有打开的选项卡。在网站自己打开一个新选项卡之前(例如,在单击按钮后),这一切正常。在这种情况下,新选项卡不会在 **.pages* 的返回中列出。
有没有办法检测这个新选项卡,以便我可以像使用其他选项卡/页面一样使用它?
(我没有用 puppeteer 对其进行测试,但我认为它的行为会相同。)
代码示例(遗憾的是我必须使用 Python 2.7,所以我必须使用 yield from):
self.browser = yield from launch(appMode=True, closeAtExit=False)
pages = yield from self.browser.pages()
self.page = pages[len(pages) - 1] # Open w3schools in the init tab
yield from self.page.goto("https://www.w3schools.com/tags/att_a_target.asp")
link = yield from self.page.waitForSelector('a.w3-btn:nth-child(4)')
yield from link.click()
yield from asyncio.sleep(5) # Just to give some extra time...
pages1 = yield from self.browser.pages()
self.log.info("Count: " + str(len(pages1))) # Should be 2 now
for mpage in pages1:
self.log.info("URL: " + str(mpage.url))
输出:
TARGETS: {'246562630E35EEAD0384B80658C827F8': <pyppeteer.target.Target object at 0x03482F10>}
TARGETS: {'246562630E35EEAD0384B80658C827F8': <pyppeteer.target.Target object at 0x03482F10>}
INFO:__main__:Count: 1
INFO:__main__:URL: https://www.w3schools.com/tags/att_a_target.asp
INFO:__main__:Done!