Puppeteer 與其他 UI 測試工具

測試工具

跨平台測試

https://saucelabs.com/beta/dashboard/manual

https://developer.mozilla.org/zh-TW/docs/Learn/Tools_and_testing/Cross_browser_testing/Automated_testing

https://developer.mozilla.org/zh-TW/docs/Learn/Tools_and_testing/Cross_browser_testing/Your_own_automation_environment

安裝:

https://github.com/GoogleChrome/puppeteer

文件:https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pageclickselector-options

安裝時他會安裝最新版本的Chromium 所以安裝會比較久

記得加上headless: false 才會打開瀏覽器

const browser = await puppeteer.launch({headless: false});

Example:

const puppeteer = require('puppeteer');
(async () => {
  const browser = await puppeteer.launch({ headless: false });
  const page = await browser.newPage();
  await page.goto('https://example.com');
  await page.goto('https://google.com')
  const hg = await page.$eval('.gb_P', el => el.innerHTML);
  console.log(hg)
  await page.type('#lst-ib', 'Hello', {delay: 100});
  await page.click('#gsri_ok0')
  await page.screenshot({ path: 'example.png' });
})();

連線到已經開啟的chrome

因為預設程式結束時chrome也會關閉,所以要用connect的方法。

使用以下方式開啟chrome

之後將以下擷取下來之後用如下方式

將 dom 傳送到 nodejs 端處理

在 evaluate 後 return 出來即可

傳遞參數到 evaluate

因為 evaluate 預設執行環境是瀏覽器,變數抓不到 node 的

https://stackoverflow.com/a/47598159/4622645

傳遞 function

https://stackoverflow.com/a/61336937/4622645

Puppeteer-firefox

https://github.com/GoogleChrome/puppeteer/tree/master/experimental/puppeteer-firefoxgoo

WebDriver.io

http://webdriver.io/

selenium-webdriver

https://github.com/SeleniumHQ/selenium/tree/master/javascript/node/selenium-webdriver

nightmare

(使用electron當作介面)

https://github.com/segmentio/nightmare

異步需要參考如下:

https://github.com/rosshinkley/nightmare-examples/blob/master/docs/common-pitfalls/async-operations-loops.md

mocha + nightmare範例

https://segment.com/blog/ui-testing-with-nightmare/

phantomjs

http://phantomjs.org/quick-start.html

casper.js

http://casperjs.org/

Last updated

Was this helpful?