4
4

More than 1 year has passed since last update.

Selenium入門と安定稼働させためのオプション by golang

Last updated at Posted at 2022-07-12

概要

Go言語でSeleniumを使おうという記事です。
基本的な使い方と、安定稼働させるためのWeb Driverのオプションを紹介しています。
オプションについてはどのプログラム言語でも同じですので、PythonやJavaをお使いの方でも同じオプションが使えます。

事前準備

Seleniumを使うのに必要な準備はどのプラットフォームでも同じでしょう。
今回はGoogle Chromeを使いますので、Google Chrome本体のインストールと、Google ChromeのWeb DriverをダウンロードしてPath配下に配置しておきます。
google chrome webdriverダウンロード

基本的な使い方

GoでSeleniumを扱うのには、agouti というライブラリが定番です。
以下は一番簡単なサンプルとして、googleを表示して、タイトルを表示するだけのものです。

package main

import (
	"fmt"

	"github.com/sclevine/agouti"
)

func main() {
	// chromeを起動
	driver := agouti.ChromeDriver()
	driver.Start()
	defer driver.Stop() // chromeを終了

	page, _ := driver.NewPage()
	page.Navigate("https://www.google.com/")
	fmt.Println(page.Title()) // 表示: Google <nil>
}

Google検索してみる

画面のコントロール方法の説明です。
簡単なサンプルとして、Googleのホームページを表示してgolangと検索してみます。

要素はquerySelectorの形式で指定できます。

	page.Navigate("https://www.google.com/")

	// 検索フォームに文字を入力し、検索。要素はセレクタで指定する
	page.First("input[type='text']").Fill("golang") // golangと入力
	page.FindByID("gbqfbb").Click() // 検索ボタンをクリック

FirstやFindByIDは1要素だけを取得するメソッドですが、複数取得する FindやAll等もあります。
詳しくは agouti のソースをご覧ください。

Alertのポップアップを消す

js:alert() を消す方法。
消さないと別ページへ遷移してもポップアップが消えず、想定した操作が出来なくなります。

page.ConfirmPopup() // ok を押す
page.CancelPopup() // キャンセルを押す

以上で簡単な使い方についてはマスターできたと思います。
次に安定稼働させるためのオプションを見ていきます。

安定稼働させるためのオプション

マシンのスペックが低い場合、安定稼働せず落ちたり止まったりすることがありますが、
driver 取得時にオプションを指定することで、リソースを節約するような設定でブラウザを起動できます。
例えば画像を読み込まない設定ができたり、画面自体を表示せずに起動できます。

ヘッドレスモード

画面を表示しない。
画面を目視で確認する必要がない場合に指定しましょう。

ヘッドレスモード
driver := agouti.ChromeDriver(
		agouti.ChromeOptions(
			"args", []string{
				"--headless",    // headlessモードの指定
				"--disable-gpu", // headlessモードの指定
			}),
	)

その他のオプション

他にもよく使うものとして以下のようなオプションがあります。

その他のオプション
	driver := agouti.ChromeDriver(
		agouti.ChromeOptions(
			"args", []string{
				"--no-sandbox",
				"--disable-dev-shm-usage",              // /dev/shmパーティションの使用を禁止し、パーティションが小さすぎることによる、クラッシュを回避する。 dockerなどのVM環境下では、設定したほうがクラッシュする確率が減る。
				"window-size=500,400",                  // 画面を小さく
				"--blink-settings=imagesEnabled=false", // 画像を読み込まない
				"lang=ja",
				"--disable-desktop-notifications",
				"--ignore-certificate-errors", // sslまわりのエラーを許容する
				"--disable-extensions",        // Extensionを利用しない
				"--user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 10_2 like Mac OS X) AppleWebKit/602.3.12 (KHTML, like Gecko) Version/10.0 Mobile/14C92 Safari/602.1')", // UAの設定。ここではiPhoneに偽装している
			}),
	)

こちらも参考に。chromeDriver全オプション

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4