2016-11-18 41 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進行調試。 當我們將其部署到我們的生產服務器時,它無法找到chromedriver的路徑。引用的路徑在我們的生產服務器上變爲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; 
     } 
    }