2016-08-25 1 views
1

WebDriverThreadLocal<WebDriver>MarionetteDriverのローカルインスタンスの型キャストを実現する方法はありますか?私のコードはこのようになりますWebDriver:MarineetteDriverをThreadLocalに変換するには<WebDriver> TestNGで並列テストで使用する場合

public class Base_Class 
    { 
    protected ThreadLocal<WebDriver> Driver = null; 
    @BeforeMethod 
    @Parameters("BrowserName") 
    public void setUp(@Optional("Firefox") String BrowserName) throws MalformedURLException 
    { 

     Driver = new ThreadLocal<WebDriver>(); 
     if(BrowserName.equalsIgnoreCase("FireFox")) 
     { 

      System.setProperty("webdriver.gecko.driver", "..//BrowserDrivers//wires"); 
      DesiredCapabilities capabilities = DesiredCapabilities.firefox(); 
      capabilities.setCapability("marionette", true); 
      Driver = new <ThreadLocal<WebDriver>> MarionetteDriver(capabilities); 


     } 
     else if(BrowserName.equalsIgnoreCase("Chrome")) 
     { 
      System.setProperty("webdriver.chrome.driver", "..//BrowserDrivers//chromedriver"); 
      Driver = new <ThreadLocal<WebDriver>>ChromeDriver(); 
     } 
    } 

    public WebDriver getDriver() 
    { 
     return Driver.get(); 
    } 

    @AfterMethod 
    public void closeBrowser() 
    { 
     getDriver().quit(); 

    } 
    } 

すべてのテストケースは、これをBase_Classよりも上に拡張した別のクラスで定義されています。

Driver = new <ThreadLocal<WebDriver>> MarionetteDriver(capabilities); and Driver = new <ThreadLocal<WebDriver>>ChromeDriver(); lines as Type mismatch: cannot convert from MarionetteDriver to ThreadLocal<WebDriver>

@エラーを私はUbuntu 14.04 OS上Chrome Version 52.0.2743.116 (64-bit)FireFox Version 48.0バージョンのブラウザを使用していますし、Selenium version selenium-server-standalone-2.53.0

testng.xmlファイルを介して並列テストの実行を達成するために募集にあたって..

任意のヘルプ高く評価されます。

+0

を教えて、あなたはドライバーのためにThreadLocalを使用している理由は何ですか?ありがとうございます。 – Grasshopper

+0

@Grasshopper:WebDAVを介してWebDriverを使用して、複数の異なるブラウザインスタンスで並列テストを実行しようとしています。ドライバインスタンスが各TCによって上書きされているため、TCのアサーションがティアダウンメソッドで失敗しています。そのため、TCのアサーションを渡すために、各スレッドのWebDriverのローカルインスタンスを作成することが必要でした。 –

答えて

0

以下の変更をコードに加えてコンパイルする必要があります。

  1. あなたDesiredCapabilities
  2. 設定されたsetメソッドを使用してThreadLocalオブジェクト内でこのドライバオブジェクトとMarionetteDriverオブジェクトを作成します。

以下のように:

if(BrowserName.equalsIgnoreCase("FireFox")) { 
    System.setProperty("webdriver.gecko.driver", "..//BrowserDrivers//wires"); 
    DesiredCapabilities capabilities = DesiredCapabilities.firefox(); 
    capabilities.setCapability("marionette", true); 

    // Commented out below line from your code 
    //Driver = new <ThreadLocal<WebDriver>> MarionetteDriver(capabilities); 
    Driver.set(new MarionetteDriver(capabilities)); 
} 

これを試してみて、私は私の知識のために

+0

Saurabh Gaurと@CARE:あなたの提案をコードで試してみました。うまくいきました。両方に感謝と歓声... –

+0

@Ag_Yoge、これがあなたに役立つなら、答えとしてこれを受け入れてください – CARE

関連する問題