2017-03-13 27 views
0

用於多個(併發)測試執行的多個瀏覽器配置文件?多個(併發)測試執行的多個瀏覽器配置文件?

  1. 這是可能的嗎?
  2. 例如,我可以同時執行兩個測試,但是當兩個測試在同一瀏覽器中同時打開時,它們似乎共享相同的cookie。
  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. 他們共享相同的cookie,因爲您創建的WebDriver實例是靜態的,嘗試刪除靜態修改器,以便在每次啓動webdriver時獲得唯一實例。

public webdriver driver;公衆的webdriver getDriver()拋出異常 {}

如果上面是不夠的,你想要做的事情更多的與型材;只是通過XML或字符串VAR的方法把它作爲一個參數:

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

再次,小心這裏currentProfile需要有一個實例變量不是一個靜態!

祝你好運!

+0

非常感謝你的幫助! – Gbru

+0

抱歉只是另一個問題,如果我從webdriver實例中刪除靜態,然後設置一個配置文件的測試共享,它不應該與cookie衝突?即使全部共享相同的配置文件? 再次感謝 – Gbru

+0

正確的Gbru,相同的配置文件不應與Cookie衝突。 –

相關問題