Selenium 使用 Node.js 開啟 Chrome, Edge, Firefox 做自動控制

最近因為有自動控制瀏覽器的需求所以研究了一下如何使用 Selenium 去控制不同的瀏覽器,並且開啟不同瀏覽器的私密模式,這邊提供幾個範例讓有需要的人參考。

基礎使用方法

基本上最簡單的使用方法可以參考官方範例,它就是開啟一個網頁使用 Google 搜尋 webdriver 作為一個簡單的 Sample

const {Builder, By, Key, until} = require('selenium-webdriver');

(async function example() {
  let driver = await new Builder().forBrowser('firefox').build();
  try {
    await driver.get('http://www.google.com/ncr');
    await driver.findElement(By.name('q')).sendKeys('webdriver', Key.RETURN);
    await driver.wait(until.titleIs('webdriver - Google Search'), 1000);
  } finally {
    await driver.quit();
  }
})();

Selenium 使用不同瀏覽器

有了上面的範例之後基本上就是使用不同的瀏覽器開啟 Selenium 而已,不過這邊要注意只有 Chrome 不用特別處理 webdriver 其他瀏覽器都需要注意,下面的範例其實就是更新一下 driver 就可以了。

Selenium 開啟 Chrome

const webdriver = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');
const chromedriver = require('chromedriver');
const driver = new webdriver.Builder()
    .withCapabilities(webdriver.Capabilities.chrome())
    .build();

Selenium 開啟 Chrome 私密模式

const webdriver = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');
const chromedriver = require('chromedriver');
const driver = new webdriver.Builder()
    .withCapabilities(webdriver.Capabilities.chrome())
    .setChromeOptions(new chrome.Options().addArguments("--incognito"))
    .build();

Selenium 開啟 Edge

Edge 需要下載 Microsoft Edge Driver才可以控制下載位置參考:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/#downloads

下載完需要把目錄加入 path 才可以正常使用

const webdriver = require('selenium-webdriver');
const edge = require('selenium-webdriver/edge');
const driver = new webdriver.Builder()
    .withCapabilities(webdriver.Capabilities.edge())
    .build();

Selenium 開啟 Edge 私密模式

const webdriver = require('selenium-webdriver');
const edge = require('selenium-webdriver/edge');
const driver = new webdriver.Builder()
    .withCapabilities(webdriver.Capabilities.edge())
    .setEdgeOptions(new edge.Options().addArguments("inprivate"))
    .build();

Selenium 開啟 Firefox

Firefox 需要下載 geckodriver 才可以控制下載位置參考:https://firefox-source-docs.mozilla.org/testing/geckodriver/Support.html

下載完需要把目錄加入 path 才可以正常使用

const webdriver = require('selenium-webdriver');
const firefox = require('selenium-webdriver/firefox');
const driver = new webdriver.Builder()
    .withCapabilities(webdriver.Capabilities.firefox())
    .build();

Selenium 開啟 Firefox 私密模式

const webdriver = require('selenium-webdriver');
const firefox = require('selenium-webdriver/firefox');
const driver = new webdriver.Builder()
    .withCapabilities(webdriver.Capabilities.firefox())
    .setFirefoxOptions(new firefox.Options().addArguments("-private"))
    .build();

參考資料