はじめに
以前こんな記事を書きました:
【α版】Selenium4のEdgeDriverでChromium版MicrosoftEdgeを動かす
が、ついにSelenium4が正式リリースされたので改めて整理しなおしてみました!
※動かせた時の感動は省略
※実際、α版と比べるとコーディングはガラッと変わってます
やったこと
Chromium版MicrosoftEdge
の取得
こちらからダウンロード&インストール
NuGet
注意
- お手元の
Edge
のバージョンに対応したdriver
を取得する必要があります。- MsEdgeでこのURLを叩けばOK:edge://settings/help
- より高いバージョンのEdge(β版など)を動かしたい場合はこちらから
msedgedriver
をダウンロード
ソース
以前書いた記事と比較すると、より自然な実装ができるようになりました。嬉しい!
ヘッドレスモードも画面ショットも問題ないですよ!
// Headlessモードはこんな感じ:
// var options = new EdgeOptions();
// options.AddArgument("--headless");
// using (var driver = new EdgeDriver(options))
using (var driver = new EdgeDriver())
{
var wait = new WebDriverWait(driver, new TimeSpan(0, 0, 5));
driver.Navigate().GoToUrl("https://www.google.com");
var q = driver.FindElement(By.Name("q"));
q.SendKeys("Chromium");
q.Submit();
wait.Until(ExpectedConditions.TitleIs("Chromium - Google 検索"));
((ITakesScreenshot)driver).GetScreenshot().SaveAsFile($"{DateTime.Now:yyyyMMddHHmmss}.png");
}
本来EdgeDriver
クラスはレガシーEdge用で、
α版時点ではEdgeOptions.UseChromium
を指定する必要があったのですが、
namespace OpenQA.Selenium.Edge
{
public class EdgeDriver : ChromiumDriver
}
てな具合でEdgeDriver
はChromium版Edge専用クラスと生まれ変わったようです。
IEモード
IEモードについては以下の通りです。
NuGet
ソース
var options = new InternetExplorerOptions
{
AttachToEdgeChrome = true,
EdgeExecutablePath = @"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
};
using (var driver = new InternetExplorerDriver(options))
{
// 略
}
こんな感じでアドレスバーにIEマークが表示されればOKです。
注意点
- IEの事前設定が必要です(Seleniumあるある)
- 拡大率を100%にしましょう
- インターネットオプション → セキュリティですべてのゾーンで「☑保護モードを有効にする」をしましょう
-
msedge
のプロセスが既に動作しているときに実行するとIEモードで動いてくれません
以前までは…
こちらの記事の通りにコーディングすると動きましたが、正式版では実行時エラーとなります:
Seleniumを使ってChromium版EdgeのIEモードを動かしてみた
気づいたこと
こんな変更があったりするので、バージョン上げるときは要注意です。
// Before ビルドエラー
var q = driver.FindElementByName("q");
// After
var q = driver.FindElement(By.Name("q"));
詳細はこちら:How to upgrade to Selenium 4
おわりに
Seleniumさん、引き続きよろしくな!