PowerShellによりGoogleChromeを操作して、HTML内のリンクを押下するサンプルコードを紹介します。
必要なファイル、サンプルコード、実行手順を紹介してみます。
仕様
PowerShellでSeleniumを実行すると、ブラウザが開き自動的にリンクを押下します。
ページが2つ用意されていてリンクを押下すると、以下の1ページ目から2ページ目に遷移します。
以下がリンクを押下した際に表示される2ページ目です。
準備
最初にいくつか外部のファイルを準備する必要があります。
PowerShell単体ではGoogleChromeを操作できず、Seleniumというブラウザ操作を自動化するフレームワークが必要になるからです。
必要なファイル
下記の2ファイルを、PowerShellのScriptファイル(*.ps1)と同じフォルダに格納します。
ファイル | 挙動 | ダウンロード元 | 補足 |
---|---|---|---|
Selenium.WebDriver | ブラウザに組み込まれている自動化の仕組み(Driver)を使用して、ブラウザを操作する。 | Selenium WebDriver | PowerShellの場合は、画面をスクロールして、C#用をダウンロードします。 「selenium.webdriver.X.X.X.nupkg」→「selenium.webdriver.4.8.1.zip」に拡張子を変更して解凍します。 |
Chrome Driver | 各ベンダーによって公開されたブラウザを操作するためのAPIを公開したライブラリ。 ベンダーによって提供されているため、標準のSeleniumには含まれていない。 | ChromeDriver | 今回はWindows環境でGoogle Chromeを使用するので、Windows用の「chromedriver_win32.zip」をダウンロードします。 |
ソースコード
下記のようなソースコードを用意しています。
page1.html
「リンク」の文字列を押下するとpage2.htmlに遷移する簡単なHTMLです。
<html>
<head>
<title>ページ1</title>
</head>
<body>
ページ1です。
<a href="./page2.html" id="link1">リンク</a>
</body>
</html>
page2.html
「ページ2です。」とだけ書かれた、page1から遷移される簡単なページです。
<html>
<head>
<title>ページ2</title>
</head>
<body>
ページ2です。
</body>
</html>
browsing.ps1
クロムを起動して、page1.htmlを表示します。
それからリンクボタンを押下します。
なお、2種類のリンクボタン押下の方法を記載していますが、どちらでも動作します。
# dllパス生成
$currentPath = (Convert-Path .)
$webDriverDllPath = $currentPath + "\selenium.webdriver.4.8.1\lib\net48\WebDriver.dll"
$chromeDriverDirPath = $currentPath + "\chromedriver_win32"
# パスからdll読み込み
Add-Type -Path $webDriverDllPath
# chrome起動
$chromeDriver = New-Object OpenQA.Selenium.Chrome.ChromeDriver($chromeDriverDirPath)
# URL開く
$chromeDriver.Url = $currentPath + "\page1.html"
# リンクボタン押下(idから探してクリック)
$chromeDriver.FindElement([OpenQA.Selenium.By]::Id("link1")).click()
# リンクボタン押下(リンクの文字列から探してクリック)
#$chromeDriver.FindElement([OpenQA.Selenium.By]::LinkText("リンク")).click()
pause
ファイル配置
下記のようにダウンロードして解凍したファイルと、PowerShellのScriptファイル(*.ps1)、操作するHTMLファイル(*.html)を同じフォルダに格納しています。
※「backup」フォルダは解凍前のファイルや、ごみファイルを個人的に取っておいただけのフォルダなので不要です(無くても動作に影響ないです)。
テスト実行
実行は右クリックメニューの「PowerShellで実行」をクリックします。
すると、ブラウザのGoogle Chromeが起動し、page1が表示され、自動でpage2まで表示されました。
参考情報
下記の環境で作成・実行しております。
No. | 環境 | バージョン |
---|---|---|
1 | OS | Windows10 |
2 | PowerShell | 5.1 |
3 | ブラウザ | Google Chrome バージョン: 111.0.5563.65(Official Build) (64 ビット) |
4 | selenium.webdriver | 4.8.1 C#用 |
5 | chromedriver | 111.0.5563.64 |
以上です。
コメント