AutoItでChromeを操作する

autoitでchromeを操作する AutoIT

AutoItでChromeを操作してスクレイピングなどをする場合は、WebDriver経由で行うのが一番やりやすいです。有名なのはSeleniumでブラウザを操作するのですが、AutoItでも同様の事が可能です。

スポンサーリンク

1. 動作確認用のexeを用意しました

Chromeを操作できる動作確認用のexeを無料で公開しているのでそこからダウンロードして設定し、使ってみましょう。

ChromeWebDriver起動チェックアプリ
Chrome WebDriverの起動チェックアプリです。 ChromeのWebDriver公式からChromeのバージョンに合ったWebDriver.exeをダウンロードしお使いのPCに置きます。 それを呼び出してChromeをプログラムでコントロールできるかの確認するアプリです。 ・インストーラー形式ではなくす...

2. WebDriverライブラリと必要なライブラリ

下記ページがWebDriverの紹介ページです(英語サイト)。

WebDriver UDF (W3C compliant version) - 05/25/2020
Introduction This UDF will allow you to interact with any browser that supports the W3C WebDriver specifications. Supporting multiple browsers via the same code...

2.1 必要なライブラリ

  1. WebDriver UDFライブラリ
  2. JSON UDFライブラリ
  3. WinHTTP ライブラリ

2.1.1 WebDriver ライブラリをダウンロードする

Danp2/WebDriver
Web Driver UDF for AutoIt. Contribute to Danp2/WebDriver development by creating an account on GitHub.

2.1.2 JSON UDFをダウンロードする

下記ページの_Json.zipをダウンロードし解凍、include/に入れておきましょう。

A Non-Strict JSON UDF (JSMN)
Introduction JSON (Javascript Object Notation) is a popular data-interchange format and supported by a lot of script languages. On AutoIt, there is already a JS...

2.1.3 WinHTTP UDFをダウンロードする

下記ページから最新版のWinHttp zipをダウンロードし解凍、include/に入れておきましょう。

dragana-r/autoit-winhttp
Automatically exported from code.google.com/p/autoit-winhttp - dragana-r/autoit-winhttp

3. WebDriverをダウンロードする

WebDriver UDF紹介ページにもありますが、各ブラウザ開発会社がオフィシャルに作成しています。
今回はChrome WebDriverを使い、Chromeを操作してみます。

Downloads - ChromeDriver - WebDriver for Chrome
WebDriver for Chrome

Chromeのバージョンに合わせて必要なドライバをダウンロードすればよいです。Chromeのバージョン確認は以下をchromeのアドレスバーに入力すれば設定ページで確認することが出来ます。
今回はC:\wd フォルダを作成し、そこに置きます。(これはどこでも大丈夫です)

chrome://settings/help
chromedriverを入れたディレクトリ
C:\wdフォルダに入れました

4. スクリプトを書いて起動確認

下記コードをwetest.au3として保存し、実行(F5)してみましょう。


#include <wd_core.au3>

; まずクロームの設定を記述
_WD_Option('Driver', 'C:\wd\chromedriver.exe') ;webdriverを指定
_WD_Option('DriverParams', ' --verbose --log-path=' & @ScriptDir & '\wdlog.log')
_WD_Option('Port', 9515)
$sdesire = '{"capabilities": {"alwaysMatch":{"goog:chromeOptions":{"w3c": true, "args":["--disable-gpu-early-init,"]}}}}'

;start 黒い画面(Chrome WebDriver)が立ち上がる
Local $pid = _WD_Startup()
If @error Then
  Msgbox(4096,"error", "webdriverの起動に失敗しました")
  Exit
EndIf

;セッションを追加 ChromeDriver経由でChrome新ウィンドウが立ち上がる
$sess = _WD_CreateSession($sdesire)
If @error Then
  MsgBox(4096, "error", "ブラウザ立ち上がりませんでした")
  Exit
EndIf

;このサイトを表示する
Sleep(1000)
_WD_Navigate($sess, "https://cfautog.tokyo")
If @error Then
  MsgBox(4096, "error", "指定したUrlを開けませんでした。 extended=" & @extended )
EndIf
Sleep(3000)

;chromeを閉じる
_WD_Window($sess, "close")
_WD_DeleteSession($sess)

;webdriverを終了
_WD_Shutdown()

コードを実行してみると、WebDriver(黒い画面)が出て、WebDriver経由で新たにセッションを開始し_WD_Navigate()で指定したurlを表示します。

実行するとWebDriver(黒い画面)とChromeウィンドウが表示されます
コードを実行すると上記のようになります

サンプルコードはこちらからダウンロードできます

cfautog/autoit
sample code. Contribute to cfautog/autoit development by creating an account on GitHub.

5. エラーメッセージボックスが出たらChromeDriverなどの指定を変更する

Chromeは常に新しいバージョンに更新されてしまい、ChromeDriverもそれに応じて新たにダウンロードし、指定し直さなくてはいけません。ここが多少面倒なところです。

ちなみにw3c Webdriverに準拠しているので、有名どころのSeleniumと記述方法は多少異なりますが基本一緒です。

WebDriver
WebDriver is a remote control interface that enables introspection and control of user agents. It provides a platform- and language-neutral wire protocol as a w...

6. Seleniumを使うことも出来る

こちらにSelenium Basic を使ってChromeを操作する方法を記事にしました。
シンプルに書けますが、別途Selenium Basicが必要なのが個人的にはちょっと・・です。

7. 参考リンク

7.1 WebDriver UDF

WebDriver UDF (W3C compliant version) - 05/25/2020
Introduction This UDF will allow you to interact with any browser that supports the W3C WebDriver specifications. Supporting multiple browsers via the same code...
WebDriver UDF - Help & Support
This is the General Help and Support thread for the WebDriver UDF. The UDF itself can be downloaded here. So if you have any questions, suggestions or errors pl...
Danp2/WebDriver
Web Driver UDF for AutoIt. Contribute to Danp2/WebDriver development by creating an account on GitHub.

7.2 Json UDF (WebDriver UDFに必要)

A Non-Strict JSON UDF (JSMN)
Introduction JSON (Javascript Object Notation) is a popular data-interchange format and supported by a lot of script languages. On AutoIt, there is already a JS...

7.3 WinHTTP UDF (WebDriver UDFに必要)

これは非常に有益なUDFなので必須です!

WinHTTP functions
The other day mikeytown2 posted one post in HTTP UDFs thread that got me thinking if there is better (different) method to send requests through the HTTP protoc...

コメント

  1. […] ル(右:設定ファイル)、マニュアルPDF(左)です。マニュアルPDFを見るか、記事「AutoItでChromeを操作する」を参照してChromeWebDriverをPCにダウンロードし、iniファイルにその場所を設定して […]

タイトルとURLをコピーしました