2017-03-13 13 views
0

複数の(同時の)テスト実行のための複数のブラウザプロファイル?複数の(同時の)テスト実行のための複数のブラウザプロファイル?

  1. これも可能ですか?
  2. たとえば、私は同時に2つのテストを実行できますが、2つのテストが同じブラウザ内で同時に開かれたときに、同じクッキーを共有しているように見えます。
  3. 私の目的を達成するために必要な設定やコードを変更するための最良の方法をアドバイスしてもらえますか?

ご協力いただきありがとうござい

public class BrowserFactory implements ISuiteListener { 
    private static WebDriver webdriver; 

    public static WebDriver getDriver() throws Exception { 
     try { 
      Properties p = new Properties(); 
      FileInputStream fi = new FileInputStream(Constant.CONFIG_PROPERTIES_DIRECTORY); 
      p.load(fi); 

      String browserName = p.getProperty("browser"); 
      switch (browserName) { 

      //firefox setup 
      case "firefox": 
       if (null == webdriver) { 
        System.setProperty("webdriver.gecko.driver", Constant.GECKO_DRIVER_DIRECTORY); 
        webdriver = new FirefoxDriver(); 
       } 
       break; 

      //chrome setup 
      case "chrome": 
       if (null == webdriver) { 
        System.setProperty("webdriver.chrome.driver", Constant.CHROME_DRIVER_DIRECTORY); 
        DesiredCapabilities caps = DesiredCapabilities.chrome(); 
        LoggingPreferences logPrefs = new LoggingPreferences(); 
        logPrefs.enable(LogType.BROWSER, Level.ALL); 
        caps.setCapability(CapabilityType.LOGGING_PREFS, logPrefs); 
        webdriver = new ChromeDriver(caps); 
       } 
       break; 

      //IE setup 
      case "ie": 
       if (null == webdriver) { 
        System.setProperty("webdriver.ie.driver", Constant.IE_DRIVER_DIRECTORY); 
        webdriver = new InternetExplorerDriver(); 
       } 
       break; 
      } 
     } catch (Exception e) { 
      System.out.println("Unable to load browser! - Exception: " + e.getMessage()); 
     } 
     return webdriver; 
    } 



    @AfterClass 
    public void quitDriver() throws Exception { 
     if (null != webdriver) { 
      getDriver().manage().deleteAllCookies(); 
      webdriver.quit(); 
      webdriver = null; 
     } 

     // Output the time when a test class has ended 
     String tempTimeEndClass = new SimpleDateFormat("hh.mm.ss").format(new Date()); 
     System.out.println("\nTEST CLASS END TIME: " + tempTimeEndClass); 
    } 
} 

答えて

2
  1. はい、もちろんそれは可能です!
  2. 作成しているWebDriverのインスタンスが静的であるため、同じCookieを共有します。一意のインスタンスを取得するたびに、Webdriverの起動ごとに静的修飾子を削除しようとします。

public webdriver driver;公共webdriverをgetDriver()上記は十分ではありません、あなたがプロファイルに追加物事を行いたい場合は例外 {}

をスローします。ただ、XMLを介して、または方法のString VARなどのパラメータとして渡す:

再び
currentProfile = "user-data-dir=/path/to/your/custom/profile"; 
ChromeOptions options = new ChromeOptions(); 
options.addArguments(currentProfile); 

、慎重ここcurrentProfileインスタンス変数ではない静的なものである必要があります!

運が良かった!

+0

ご協力いただきありがとうございます。 – Gbru

+0

申し訳ありませんが、私はwebdriverインスタンスからスタティックを削除し、共有するテストのために1つのプロファイルを設定すると、クッキーと競合しませんか?たとえすべてが同じプロフィールを共有していても? ありがとうございました – Gbru

+0

Gbruを修正してください。同じプロフィールがCookieと競合してはいけません。 –

関連する問題