ドライバーをインスタンス化する前にSystem.addProperty("webdriver.chrome.driver", ".../chromedriver.exe");
の問題を解決したと思われる同じ問題を抱えている人に出くわしました。
私はこれで少し運がありましたが、ファイル.../bin/Debug/chromedriver.exe
存在しない。
誰もこれをbinフォルダに入れずに実行する運がありましたか?
サンプルコード:
System.Environment.SetEnvironmentVariable("webdriver.chrome.driver", @"c:\path\to\driver\chromedriver.exe");
BrowserDriver = new ChromeDriver();
古い質問、新しい答え(価値がある場合):NugetパッケージSelenium.WebDriver.ChromeDriverをインストールするだけです。 Chromedriver.exeは、次のビルドのbin/debugディレクトリにあります。
これについて githubページjsakamoto/nupkg-Selenium-webdriver-chromedriver / 実行後Install-Package Selenium.WebDriver -Version 3.5.2
chromedriver(.exe)はこのフォルダーの下にあります
"{ソリューションフォルダー} /packages/Selenium.WebDriver.ChromeDriver。{ver}/driver/{platform}"
C#を使用しているため、chromedriver.exeを含むディレクトリへのパスを指定できるChromeDriverのコンストラクタオーバーロードを使用する必要があります。機知に:
IWebDriver driver = new ChromeDriver(@"C:\my\path\to\chromedriver\directory");
これは、NuGetパッケージが.NET Frameworkプロジェクトのパッケージフォルダーではなく、グローバルな場所から読み込まれていることが原因である可能性があります。これは私のために働いた:
IWebDriver driver = new ChromeDriver(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
you may have enum for your all drivers :
public enum Drivers
{
Chrome,
Firefox,
Safari,
Edge,
IE
}
public static IWebDriver GetDriver(Drivers driver)
{
outPutDirectory->は、ソリューションをビルドするときにすべてのサポートdllおよびファイルがコピーされる場所です。例:C:\ Users\Mike\source\repos\Automation\Automation\bin\Debug
var outPutDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
// below is my location where I copied all drivers like chromedriver.exe
relativePath->は、soltuionの例をビルドするときにコピーされるフォルダーの1つです:C:\ Users\Mike\source\repos\Automation\Automation\bin\Debug\BrowserDriver
var relativePath = @"..\..\bin\Debug\BrowserDriver";
//つまり、「chromeDriverPath」は、オートメーションを実行しているマシンまたはPCに関係なく、ドライバーの正確な場所を提供します
var chromeDriverPath = Path.GetFullPath(Path.Combine(outPutDirectory,relativePath));
// return this driver , just debug this code and check the "outPutDirectory" path
return new ChromeDriver(chromeDriverPath);
}
インストールSelenium.WebDriver.ChromeDriver
NuGetから、次のことができます。
IWebDriver driver = new ChromeDriver(Environment.CurrentDirectory);
Selenium.WebDriver.ChromeDriver NuGetパッケージがダウンロードされたため、結果としてchromedriver.exeファイルがコンパイル時にbinフォルダーにコピーされていましたが、さらにそれがデプロイメントアイテムとしてマークされる必要があることがわかりました(ユニットテストであるため) TestResultsフォルダーにコピーイン/実行される)-つまり.
[DeploymentItem(@ "chromedriver.exe")]
これは分離するのが難しいものでした- ヒントはSelenium.WebDriver.ChromeDriver.targets
を含むnugetソースにあります -ターゲットは明示的なプロパティの割り当てを必要とするため、chromedriver.exe
はvstest.console
デプロイメントディレクトリにコピーされません。 CSPROJファイルに追加する修正は次のとおりです。
PublishChromeDriver
プロパティを割り当てます <PropertyGroup>
<AssemblyName>MyUX.Tests</AssemblyName>
<!-- ... -->
<PublishChromeDriver>True</PublishChromeDriver>
</PropertyGroup>
このプロパティを定義すると、chromedriver.exe
のコピーが/bin
のvstest.console
にコピーされます。これにより、受信していたエラーが修正されます。
chromedriver.exe file does not exist in the current directory or in a directory on the PATH environment variable. The driver can be downloaded at http://chromedriver.storage.googleapis.com/index.html
<Target Name="CopyChromeDriverToBin" BeforeTargets="AfterBuild">
<Copy SourceFiles="$(ChromeDriverSrcPath)" DestinationFiles="$(TargetDir)$(ChromeDriverName)" SkipUnchangedFiles="true">
</Copy>
</Target>
これは私が見ているエラーです:OpenQA.Selenium.DriverServiceNotFoundException:chromedriver.exeファイルは現在のディレクトリまたはPATH環境変数のディレクトリに存在しません。
この問題を解決するには、コマンドに「testsettings」引数を指定して、単体テストを実行します。
例えば。
E:\Development\SampleProject\SampleProject.MvcWebApp\SampleProject.MvcWebApp.JavaScriptUnitTests\JavaScriptUnitTests\bin\Debug>"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\mstest.exe" /testcontainer:JavaScriptUnitTests.dll /category:"JavaScriptUnitTests" /testsettings:..\..\..\Local.Testsettings /resultsfile:..\..\..\..\..\MsTestResults\SampleProject.MvcWebApp.JavaScript.Tests.trx
Local.testsettingsファイルは、このコマンドを実行しているレベルより4レベル高いため、「/ testsettings:......\Local.Testsettings」を使用します。それに応じて変更する必要があります。
これはccnet.configファイルで使用されるコマンドです
<exec>
<executable>C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\mstest.exe</executable>
<baseDirectory>SampleProject.MvcWebApp\SampleProject.MvcWebApp.JavaScriptUnitTests\JavaScriptUnitTests\bin\Debug</baseDirectory>
<buildArgs>/testcontainer:JavaScriptUnitTests.dll /category:"JavaScriptUnitTests" /testsettings:..\..\..\Local.Testsettings /resultsfile:..\..\..\..\..\MsTestResults\SampleProject.MvcWebApp.JavaScript.Tests.trx</buildArgs>
<successExitCodes>0</successExitCodes>
</exec>
Atataおよび.Net Coreを使用している場合は、次のページを参照してください。 https://atata.io/getting-started/#dot-net-core-configuration
AtataContext.Configure()
.UseChrome()
.WithFixOfCommandExecutionDelay()
.WithLocalDriverPath()
.UseCulture("en-us")
.Build();
これらはあなたが持っていることを確認したい行です:
.UseChrome()
.WithFixOfCommandExecutionDelay()
.WithLocalDriverPath()