Selenium(Vb.net)備忘録②(Selenium_classの作成)

スポンサーリンク

seleniumでGoogle chromeの操作を自動化します。作業の簡略化のためにClassを使って、基本的な事項を集約管理し、これを各プロジェクトで呼び出すことで、都度コーディングする手間を省きます。また、より一歩進んで、プロジェクト間共通クラスをすることで、1つのプロジェクトで修正、機能追加などがあった場合に、すべてのプロジェクトにいちいち同じ修正を行う手間を省くことができます。

  • Selenium(vb.net)の基本はこちら
  • Selenium(vb.net)の基本Selenium_Classの作成例はこちら

1.完成品はこれ。


selenium_classの完成品はこれ。プログラムの最初でこのクラスを作っておけば、基本的な操作が面倒なコーディングなしに利用できます。

Public Class Selenium_Class
    Public Dri01 As New Selenium.WebDriver
    Public Sub StartBrowser(Str01 As String)
        '起動するchromeのオプション設定
        Dri01.SetPreference("safebrowsing.enabled", True)

        'ブラウザ起動
        Dri01.Start("chrome")

        'ウィンドウ最大化
        Dri01.Window.Maximize()

        'URLアドレスを開く
        Dri01.Get(Str01)
    End Sub

    Public Sub DownloadDirectory(str01 As String)
        'str01はダウンロード先フォルダパス
        Dri01.SetPreference("download.default_directory", str01)
    End Sub

    Public Sub headlessmode(boo As Boolean)
        'ブラウザ画面を表示しないモード(ヘッドレスモード)にする。
        'boo = trueで呼び出すと有効化される。
        'StartBrowserより前に呼び出しておく。
        If boo = True Then
            Dri01.AddArgument("headless") 
            Dri01.AddArgument("disable-gpu")
        End If
    End Sub

End Class

2.selenium_classの呼び出し方


seleniumの利用に当たっては1モジュール内で処理が完結することが少ないため、selenium_classはグローバル変数で宣言することが、私は多い。

public SeleC01 as selenium_class

Public Sub Initialize() 
  SeleC01 = New Selenium_class
  SeleC01.headlessmode(True)
  SeleC01.StartBrowser("https://google.com")
  ※その他初期共通処理があればかく。
End Sub
 
Public sub main()
  ※ブラウザを操作する内容はここでかく。
End Sub

3.プロジェクト間共通クラスの読み込み方


プロジェクトが複数にまたがる場合、新規開発中にSelenium_Classを修正する場合がある。この時、同じClassを利用しているすべてのプロジェクト上で同じ修正を取り込むのは面倒な作業なので、プロジェクトにclassを読み込む際にあらかじめ共通部品とておくことが望ましい。

共通部品としての読み込み方についてはこちら(1.3 必要なモジュールを読み込む)を参照。

4.プロジェクト間共通クラスにすることのメリット


  • 複数プロジェクトで共通的に使う処理がある場合に、同じコーディングをする手間が省ける。
  • 1プロジェクトで共通クラスに対する修正が入った時に、別のプロジェクトでも同じ修正をする手間が省ける。
  • クラス内によく使うコマンドなどのメモを置いておくと、コマンドや手続きを暗記したり、都度調べる必要がなくなる。

5.その他備考とか


SeleC01.headlessmode(True)

この部分は、試験中などはコメントアウトしておくと良い。

startBrowserに引数を追加して、HeadlessModeも指定できるようにすると良いのかも。

コメントを残す