web-dev-qa-db-ja.com

VSTSホストエージェントでChrome(ヘッドレスモード))でSeleniumテストを実行する

ヘッドレスモードでChromeドライバーを使用して、Visual Studio Team Servicesビルド/リリース内のホストされたエージェントでSelenium C#テストを実行することは可能ですか?

これが現在可能であり、不可能であることを示す矛盾した情報を見てきました。このユーザーの声のアイデアは、Chromeがホストされているエージェントにプリインストールされていることを示唆しているようです:

https://visualstudio.uservoice.com/forums/330519-visual-studio-team-services/suggestions/19387174-install-headless-chrome-on-hosted-build-servers

現在の設定

テストのセットアップの一部として(コードで)、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.exebinにコピーされていることを確認しました)ディレクトリであり、リリースプロセスで使用されているビルドアーティファクトに含まれています。

代替案

これらのテストを実行するためにプライベートエージェントをセットアップできることは知っていますが、可能であればこれを避け、VSTS内でホストされているエージェントを利用したいと思いました。

また、VSTS内でPhantomJSドライバーを使用してテストを正常に実行することもできましたが、可能であれば、Chromeブラウザーに対して排他的にテストできるようにしたいと思います。

[〜#〜]更新[〜#〜]

以下の受け入れられた回答(Bernard Vander Bekenによる)に従って、PowerShellスクリプトを介してChromeサイレントで無人でインストールするための追加のリリースタスクを挿入することで、これを解決することができました。このタスクは(明らかに)必要ですSeleniumテスト内でブラウザーをヘッドレスモードで使用できるように、テスト実行の前に実行されます。

Release Definition Example

7
smd

可能であるはずです。 https://github.com/Microsoft/vsts-agent/issues/1378 を参照してください。

ホストされているエージェントは管理者として実行されているため、chromeが無人インストールモードである限り、ビルドの一部としてchromeをインストールできるはずです。

私は同じ問題を抱えていました。この問題は主にバージョンの互換性が原因です。いくつかの組み合わせを試し、動作させました。以前、最新バージョンのChromeDriver、つまり76.*.*.*を使用しましたが、これはHosted Agentのいずれでもサポートされていません(この回答を書いた時点で)私はWin 1803を使用していました。後でChromeDriverバージョンを72.*.*.*に、Hosted AgentVS2017-Win2016に変更しましたが、現在は正常に機能しています。 Windows2019でも機能します。

したがって、結論として、DevOpsが最新リリースのサポートを利用できるようになるまでには時間がかかります。プロジェクト環境に基づいて、さまざまな組み合わせを試してください。

1
Vijay Kumbhoje

最近のホステッド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も最近利用可能になりました)。

0
Jacob Foshee