ヘッドレスモードでChromeドライバーを使用して、Visual Studio Team Servicesビルド/リリース内のホストされたエージェントでSelenium C#テストを実行することは可能ですか?
これが現在可能であり、不可能であることを示す矛盾した情報を見てきました。このユーザーの声のアイデアは、Chromeがホストされているエージェントにプリインストールされていることを示唆しているようです:
現在の設定
テストのセットアップの一部として(コードで)、Chromeドライバーをヘッドレスモードで実行し、VSのローカルインスタンス内で実行するときに実行することを示しています。
例:
var options = new ChromeOptions();
options.AddArgument("headless");
options.AddArgument("disable-gpu");
var driver = new ChromeDriver(options);
VSTS内のリリース定義の一部としてテストを実行すると、次のエラーがスローされます。
2018-02-20T13:21:10.7954002Z Error Message:
2018-02-20T13:21:10.7954156Z unknown error: cannot find Chrome binary
2018-02-20T13:21:10.7954340Z (Driver info: chromedriver=2.35.528161 (5b82f2d2aae0ca24b877009200ced9065a772e73),platform=Windows NT 10.0.14393 x86_64)
2018-02-20T13:21:10.7954487Z Stack Trace:
2018-02-20T13:21:10.7954620Z System.InvalidOperationException: unknown error: cannot find Chrome binary
2018-02-20T13:21:10.7955947Z (Driver info: chromedriver=2.35.528161 (5b82f2d2aae0ca24b877009200ced9065a772e73),platform=Windows NT 10.0.14393 x86_64)
2018-02-20T13:21:10.7956136Z at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
2018-02-20T13:21:10.7956387Z at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
2018-02-20T13:21:10.7956557Z at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities)
2018-02-20T13:21:10.7956729Z at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities)
2018-02-20T13:21:10.7956927Z at OpenQA.Selenium.Chrome.ChromeDriver..ctor(ChromeDriverService service, ChromeOptions options, TimeSpan commandTimeout)
2018-02-20T13:21:10.7957106Z at OpenQA.Selenium.Chrome.ChromeDriver..ctor(String chromeDriverDirectory, ChromeOptions options)
chromedriver.exeがbinにコピーされていることを確認しました)ディレクトリであり、リリースプロセスで使用されているビルドアーティファクトに含まれています。
代替案
これらのテストを実行するためにプライベートエージェントをセットアップできることは知っていますが、可能であればこれを避け、VSTS内でホストされているエージェントを利用したいと思いました。
また、VSTS内でPhantomJSドライバーを使用してテストを正常に実行することもできましたが、可能であれば、Chromeブラウザーに対して排他的にテストできるようにしたいと思います。
[〜#〜]更新[〜#〜]
以下の受け入れられた回答(Bernard Vander Bekenによる)に従って、PowerShellスクリプトを介してChromeサイレントで無人でインストールするための追加のリリースタスクを挿入することで、これを解決することができました。このタスクは(明らかに)必要ですSeleniumテスト内でブラウザーをヘッドレスモードで使用できるように、テスト実行の前に実行されます。
可能であるはずです。 https://github.com/Microsoft/vsts-agent/issues/1378 を参照してください。
ホストされているエージェントは管理者として実行されているため、chromeが無人インストールモードである限り、ビルドの一部としてchromeをインストールできるはずです。
私は同じ問題を抱えていました。この問題は主にバージョンの互換性が原因です。いくつかの組み合わせを試し、動作させました。以前、最新バージョンのChromeDriver
、つまり76.*.*.*
を使用しましたが、これはHosted Agent
のいずれでもサポートされていません(この回答を書いた時点で)私はWin 1803
を使用していました。後でChromeDriver
バージョンを72.*.*.*
に、Hosted Agent
をVS2017-Win2016
に変更しましたが、現在は正常に機能しています。 Windows2019
でも機能します。
したがって、結論として、DevOpsが最新リリースのサポートを利用できるようになるまでには時間がかかります。プロジェクト環境に基づいて、さまざまな組み合わせを試してください。
最近のホステッドVSエージェントでは、 Hosted VS2017
、Webブラウザ、さらにはSeleniumドライバもすでにインストールされています。ホストされているエージェントのドキュメントは、 Azure Piplelines Image Generation Github Repo でフォローできます。たとえば、 これはChrome VS2017エージェントに存在する への参照です。
クリック Agent Phase
パイプラインの上部にあるタイトル。次にAgent pool
選択する Hosted VS2017
バニラHosted
プールではなく。 (Windows 2019 with VS 2019
も最近利用可能になりました)。