2015-05-05 20 views
0

我有一個問題。如何在不打開其他驅動程序的情況下將PhantomJSDriverService添加到驅動程序?或者最後關閉兩位車手?將PhantomJSDriverService添加到驅動程序的問題

我有什麼作品,但它打開2個驅動程序,當程序結束時它只關閉其中的一個。另一個繼續運行,直到我通過任務管理器關閉它。

所以,我有這個。 在代碼的開始我創建一個驅動程序:

IWebDriver driver = new PhantomJSDriver(); 

在代碼中創建該驅動程序我打電話,其他地方後,PhantomJSDriverService:

  PhantomJSDriverService service = PhantomJSDriverService.CreateDefaultService(); 
      service.IgnoreSslErrors = true; 
      service.LoadImages = false; 
      service.ProxyType = "none"; 

我別的地方調用它的代碼因爲如果我在調用之前無法設置 服務值。

要將服務添加到驅動程序我使用這個設置服務價值後:

driver = new PhantomJSDriver(service); 

但我做到這一點時,它創建另一個驅動程序。那麼......之後有可能關閉第二位車手嗎?還是有其他解決方案嗎?

這是我的清除方法:

public void CleanUp() 
    { 
     if (driver != null) 
     { 
      Console.WriteLine("Closed browser"); 
      driver.Dispose(); 
     } 
    } 

回答

0

我會嘗試,後來啓動驅動程序了在這個過程中像下面

PhantomJSDriverService service = PhantomJSDriverService.CreateDefaultService(); 
service.IgnoreSslErrors = true; 
service.LoadImages = false; 
service.ProxyType = "none"; 

IWebDriver driver = new PhantomJSDriver(service); 
+0

沒錯,但需要在代碼開頭的驅動程序,因爲它需要在使用之前予以宣佈。 – JoshC

+0

@JoshC啊好吧,所以你使用的驅動程序,然後改變它的屬性? –

+0

嗯,是的,因爲如果聲明不在方法中,你不能改變它的屬性。 (在代碼的開始處)。有沒有更好的方法來改變它的屬性? – JoshC

0

最好的解決辦法是,直到你需要不進行實例化它。我的意思是把它分配到null開始;

IWebDriver driver = null; 

...做你正在做的,然後只是做業務相關的東西,像以前一樣:

driver = new PhantomJsDriver();