web-dev-qa-db-ja.com

ChromeDriverはSelenium WebDriver C#テストスクリプトに存在しません

ドライバーをインスタンス化する前に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();
30
Highstead

古い質問、新しい答え(価値がある場合):NugetパッケージSelenium.WebDriver.ChromeDriverをインストールするだけです。 Chromedriver.exeは、次のビルドのbin/debugディレクトリにあります。

サードパーティ編集2017-09

これについて githubページjsakamoto/nupkg-Selenium-webdriver-chromedriver / 実行後Install-Package Selenium.WebDriver -Version 3.5.2chromedriver(.exe)はこのフォルダーの下にあります

"{ソリューションフォルダー} /packages/Selenium.WebDriver.ChromeDriver。{ver}/driver/{platform}"

27
Mcanic

C#を使用しているため、chromedriver.exeを含むディレクトリへのパスを指定できるChromeDriverのコンストラクタオーバーロードを使用する必要があります。機知に:

IWebDriver driver = new ChromeDriver(@"C:\my\path\to\chromedriver\directory");
65
JimEvans

これは、NuGetパッケージが.NET Frameworkプロジェクトのパッケージフォルダーではなく、グローバルな場所から読み込まれていることが原因である可能性があります。これは私のために働いた:

IWebDriver driver = new ChromeDriver(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
16
Harun Davood
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);
   }
6
Mike ASP

インストールSelenium.WebDriver.ChromeDriver NuGetから、次のことができます。

IWebDriver driver = new ChromeDriver(Environment.CurrentDirectory);
5
mr.coffee

Selenium.WebDriver.ChromeDriver NuGetパッケージがダウンロードされたため、結果としてchromedriver.exeファイルがコンパイル時にbinフォルダーにコピーされていましたが、さらにそれがデプロイメントアイテムとしてマークされる必要があることがわかりました(ユニットテストであるため) TestResultsフォルダーにコピーイン/実行される)-つまり.

[DeploymentItem(@ "chromedriver.exe")]

3
TerrorBight

これは分離するのが難しいものでした- ヒントはSelenium.WebDriver.ChromeDriver.targetsを含むnugetソースにあります -ターゲットは明示的なプロパティの割り当てを必要とするため、chromedriver.exevstest.consoleデプロイメントディレクトリにコピーされません。 CSPROJファイルに追加する修正は次のとおりです。

CSPROJでPublishChromeDriverプロパティを割り当てます

  <PropertyGroup>
    <AssemblyName>MyUX.Tests</AssemblyName>
     <!-- ... -->
    <PublishChromeDriver>True</PublishChromeDriver>
  </PropertyGroup>

このプロパティを定義すると、chromedriver.exeのコピーが/binvstest.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

代替アプローチ-CSPROJの強制コピー

  <Target Name="CopyChromeDriverToBin" BeforeTargets="AfterBuild">
    <Copy SourceFiles="$(ChromeDriverSrcPath)" DestinationFiles="$(TargetDir)$(ChromeDriverName)" SkipUnchangedFiles="true">
    </Copy>
  </Target>
2

これは私が見ているエラーです: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>
1
Ali Lane

Atataおよび.Net Coreを使用している場合は、次のページを参照してください。 https://atata.io/getting-started/#dot-net-core-configuration

 AtataContext.Configure()
                .UseChrome()
                .WithFixOfCommandExecutionDelay()
                .WithLocalDriverPath()
                .UseCulture("en-us")
                .Build();

これらはあなたが持っていることを確認したい行です:

.UseChrome()
.WithFixOfCommandExecutionDelay()
.WithLocalDriverPath()
1
Rafe