python - 如何使用 pyppeteer 在新标签页中打开 url?
问题描述
使用 nodejs 和 puppeteer,它看起来像:
const puppeteer = require('puppeteer');
const browser = await puppeteer.launch();
const page1 = await browser.newPage();
await page1.goto('https://google.com');
await page1.waitForSelector('#fsl > a:nth-child(4)');
const link = await page1.$('#fsl > a:nth-child(4)');
const newPagePromise = new Promise(x => browser.once('targetcreated', target => x(target.page()))); // define promise
await link.click({button: 'middle'});
const page2 = await newPagePromise;
await page2.bringToFront();
...
await browser.close();
python和pyppeteer的等效代码字符串“定义承诺”是什么?
解决方案
我下面的代码可能会帮助你
result_page = asyncio.get_event_loop().create_future() # create new promise
# bind promise to watch event targetcreated, must before click to link
browser.once('targetcreated', lambda target: result_page.set_result(target))
await link.click({button: 'middle'}); # click link and open to other tab
page_in_new_tab = await (await result_page).page() # page in new tab here
推荐阅读
- sql - 合并需要很长时间才能更新记录
- reactjs - NEXT.JS:调用 api 路由时,对象作为 React 子级无效
- ms-access - 在 Accees 中显示错误时输入另一个值
- javascript - useState 在功能上与组件 React 的行为不同
- azure-policy - 用于审核具有空值的标记的 Azure 策略
- python - 如何以正确的方式在 Django 中为在线商店设计产品及其功能(选项)的模型?
- mysql - MySQL:返回符合条件的行:1.日期升序,2.视图降序
- sylius - 再次覆盖 state_machine 在 Sylius ^1.9 中不起作用
- python - 如何让 Mypy 将冻结的数据类识别为 Hashable
- python - NumPy 中 Sage .right_array() 的等价物是什么?