{"id":15043838,"url":"https://github.com/replace5/electron-puppeteer","last_synced_at":"2025-06-10T22:33:32.313Z","repository":{"id":42847754,"uuid":"260982820","full_name":"replace5/electron-puppeteer","owner":"replace5","description":"electron webview driver like puppeteer","archived":false,"fork":false,"pushed_at":"2023-03-04T16:55:40.000Z","size":4053,"stargazers_count":20,"open_issues_count":7,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-28T11:12:20.078Z","etag":null,"topics":["electron","electron-webview","puppeteer"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/replace5.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-03T17:22:56.000Z","updated_at":"2024-04-21T06:02:18.000Z","dependencies_parsed_at":"2024-09-24T23:32:53.907Z","dependency_job_id":"d03c030c-0941-420c-b7a7-714a8abc8ab6","html_url":"https://github.com/replace5/electron-puppeteer","commit_stats":null,"previous_names":["replac5/electron-puppeteer"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/replace5%2Felectron-puppeteer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/replace5%2Felectron-puppeteer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/replace5%2Felectron-puppeteer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/replace5%2Felectron-puppeteer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/replace5","download_url":"https://codeload.github.com/replace5/electron-puppeteer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248198871,"owners_count":21063626,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["electron","electron-webview","puppeteer"],"created_at":"2024-09-24T20:49:40.093Z","updated_at":"2025-04-14T23:12:30.434Z","avatar_url":"https://github.com/replace5.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# electron-puppeteer\n\n\u003e electron webview 的驱动，Api 和 puppeteer 高度相似\n\n## 效果预览\n\n![预览图](https://s1.ax1x.com/2020/05/11/YG5p7T.gif)\n\n## 基础使用\n\n\u003e **注意** webview.preload.js 必须是`file`或`asar`协议\n\n```javascript\n// set the script type=\"module\"\nconst path = require(\"path\")\nconst electronPuppeteer = require(\"electron-puppeteer\").default\n\nasync function run() {\n  // open a browser\n  const browser = await electronPuppeteer.launch({\n    // container must has height, example: `\u003cdiv id=\"container\" style=\"height: 100vh\"\u003e\u003c/div\u003e`\n    container: document.getElementById(\"container\"),\n    startUrl: \"https://segmentfault.com/\",\n    createPage: true,\n    partition: \"persist:test\",\n    // webview.preload.js的路径\n    preload:\n      \"file://\" +\n      path.join(\n        __dirname,\n        \"node_modules/electron-puppeteer/preload/webview.preload.js\",\n      ),\n  })\n\n  const pages = await browser.pages()\n  const page = pages[0]\n  // input search text\n  let $search = await page.$(\"#searchBox\")\n  let word = \"electron\"\n  for (let i = 0; i \u003c word.length; i++) {\n    let c = word.charAt(i)\n    await $search.press(c)\n  }\n  // click search button\n  await page.click(\".header-search button\")\n\n  const page2 = await browser.newPage()\n  await page2.goto(\"https://segmentfault.com/blogs\")\n}\n\nrun()\n```\n\n### 切换多个 browser\n\n```javascript\n  const path = require(\"path\")\n  import electronPuppeteer from \"./node_modules/electron-puppeteer/renderer/index.js\"\n\n  const browserMap = new Map()\n  function showBrowser(name) {\n    const browser = browserMap.get(name)\n    if (!browser) {\n      browser = await electronPuppeteer.launch({\n        container: document.getElementById('container'),\n        preload: \"file://\" +\n          path.join(\n            __dirname,\n            \"node_modules/electron-puppeteer/preload/webview.preload.js\",\n          ),\n      })\n      // do something\n    }\n    browser.bringToFront()\n  }\n```\n\n### [Api](./doc/index.html)\n\n## Demo\n\n\u003e node 版本建议在 v11+\n\n1. 到 demo 目录运行`npm install`\n2. 运行 npm start\n\n## 注意事项\n\n\u003e 所属 BrowserWindow 的 webPreferences.nodeIntegration 需要为 true，否则无法获取和操作 webivew 下的 iframe  \n\u003e 所属 BrowserWindow 的 webPreferences.devtools 不能为 false，否则 launch 时传入 devtools 将无效  \n\u003e launch 时传入的 webPreferences 属性都必须在 BrowserWindow 内配置，否则无法单独生效\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freplace5%2Felectron-puppeteer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freplace5%2Felectron-puppeteer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freplace5%2Felectron-puppeteer/lists"}