2016-11-18 20 views
0

私たちは内部サイト用のウェブサイトベリファイアを作成して、すべてのサイトが稼働していることを確認しています。このために、セレンのクロムドライブを使用します。デプロイ後に参照ファイルが見つかりませんC#

私たちは2つのプロジェクトを持っています: コードを実行する1つのメインプロジェクト。 1つの "共有"プロジェクトは、私たちのさまざまなソリューションすべてで共有されています。このプロジェクトには、複数のソリューションで使用されるデータが含まれています。

は、我々は共有プロジェクトにchromedriverを配置し、このようにそれを初期化しています

 public static IWebDriver InitiateChromeDriver() 
    { 
     ChromeOptions option = new ChromeOptions(); 

     option.AddUserProfilePreference("download.default_directory", downloadPath); 
     option.AddUserProfilePreference("disable-popup-blocking", "true"); 

     var path = Path.GetFullPath("Utility"); 

     Console.WriteLine(path); 

     IWebDriver driver = new ChromeDriver(path, option, TimeSpan.FromMinutes(20)); 

     return driver; 
    } 

この方法は、一緒にChromedriver.exeで、「ユーティリティ」フォルダに配置され、そして時にローカルで実行することができますVisual Studioを使用したデバッグ プロダクションサーバーに展開すると、クロムドライバへのパスが見つかりません。参照先のパスは、運用サーバー上のC:\ windows \ system32 \ inetsrv \ Utility \ chromedriver.exeに変更されます。

ファイルを参照し、パスが正しいことを確認するより良い方法はありますか?

+0

単純な修正は、ソリューションの.Configファイルにパスを保存して使用することです。 –

+0

このアプローチの問題は、パスが変更できることです。私たちは、IIS上に異なるサイトを運営するいくつかのサーバーを持っており、それらのすべてがC:/ドライブ上で実行されるわけではないので、パスは変更されます。私たちは以前のバージョンが保存されているので、フォルダ名が変更されます。 展開すると、新しいフォルダ名には展開の現在のタイムスタンプが添付されているため、フォルダ名も変更されます。 – Jannik

+0

その後、レジストリキーにパスを保存するようにインストーラを設定できます(MSIなどと仮定して)。 –

答えて

0

以下を試してください。 driversというフォルダを作成し、chromedriverを追加します。

   ChromeOptions options = new ChromeOptions(); 
       option.AddUserProfilePreference("disable-popup-blocking", "true"); 
       driver = new ChromeDriver(Path.Combine(GetBasePath, @"Drivers\\"), options); 


    public static string GetBasePath 
    { 
     get 
     { 
      var basePath = 
       System.IO.Path.GetDirectoryName((System.Reflection.Assembly.GetExecutingAssembly().Location)); 
      basePath = basePath.Substring(0, basePath.Length - 10); 
      return basePath; 
     } 
    } 
関連する問題