2013-11-26 113 views
1

我試圖運行兩個瀏覽器使用testNG並行運行下面的測試,同時運行這兩個瀏覽器都與URL啓動,但只有一個瀏覽器發生完整的測試執行。testNG並行執行不起作用

這裏是我的測試套件類

@Test (groups = {"Enable"}) 
@SuppressWarnings("unused") 
public class EETestSuite_01 extends ApplicationFunctions{ 
    String URL = Globals.GC_EMPTY; 

    @BeforeTest 
    @Parameters("browser") 
    public void loadTest(String browser) throws IOException{ 
     InitializeTestEnv("EE|BizApp"); 
     if(browser.equalsIgnoreCase("Firefox")) 
       GetBrowser("Firefox"); 
      else if(browser.equalsIgnoreCase("Chrome")){ 
       GetBrowser("Chrome"); 
      } 

    } 

    @AfterMethod 
    public void cleartest() throws InterruptedException{ 
     driver.close(); 
     driver.quit(); 
     driver = null; 
    } 


    public void TC001_Phone_First_Acquisition_Journey_PAYM() throws InterruptedException{ 
     URL = EnvDetail.get(Globals.GC_HOME_PAGE); 
     Map<String,String> TDChoosePlan = null; 
     TDChoosePlan = getData(appName+Globals.GC_TEST_DATA_SHEET,"ChoosePlan",1); 
     try{ 
      launchApp(URL); 
      //driver.navigate().to("javascript:document.getElementById('overridelink').click()"); 
      EEHomePage homePage = PageFactory.initElements(driver, EEHomePage.class); 
      EEShopPage shopPage = homePage.GetToShopPage(); 
      EEPhoneMatrixPage phonePage = shopPage.GetToPhoneMatrixPage(); 
      EEChoosePlanPage planPage = phonePage.ChoosePhone("NokiaLumia1020"); // Implement select phone 
      EEAddonsPage addonPage = planPage.SelectPhonesPlan(TDChoosePlan); 
      EEBasket basketPage = addonPage.GoToBasketPage(); 
      EESecureCheckOut secureChkOutPage = basketPage.GoToSecureCheckOutPage(); 
      secureChkOutPage.ChooseNonExistingCustomer(); 
      EEConfirmation confPage = secureChkOutPage.FillUserRegisterForm(2); 
     }catch(Exception e){ 
      e.printStackTrace(); 
     }  
    } 


} 

我的XML看起來像這樣

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite name = "EEAutomationTestSuite" verbose="2" parallel = "tests" thread-count="100"> 

<test name="PAYM Acquisition in Chrome"> 
    <parameter name="browser" value="Firefox"></parameter> 
    <classes> 
    <class name="com.testsuite.EETestSuite_01"> 
    </class> 
    </classes> 
</test> 

<test name="PAYM Acquisition in FF"> 
    <parameter name="browser" value="Firefox"></parameter> 
    <classes> 
    <class name="com.testsuite.EETestSuite_01"> 
    </class> 
    </classes> 
</test> 
</suite> 

而且我對主頁的代碼是這樣

*/ public EEShopPage GetToShopPage() throws InterruptedException{ 

     // longWait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(OR.getProperty("wblShopHeader")))); 
     lblShopHeader = driver.findElement(By.cssSelector(OR.getProperty("wblShopHeader"))); 
     Actions builder = new Actions(driver); 
     Actions hoverOverRegistrar = builder.moveToElement(lblShopHeader); 
     hoverOverRegistrar.perform();Thread.sleep(10000); 
     lnkStartShopping = driver.findElement(By.cssSelector(OR.getProperty("lnkStartShopping"))); 
     mediumWait.until(ExpectedConditions.elementToBeClickable(By.cssSelector(OR.getProperty("lnkStartShopping")))); 
     lnkStartShopping.click(); 
     return PageFactory.initElements(driver,EEShopPage.class); 
    } 
} 

這裏是司機

public static void GetBrowser(String browser){ 
     try{ 
      if (browser.equalsIgnoreCase("firefox")) {    
//    FirefoxProfile firefoxProfile = new FirefoxProfile(); 
//    File pathToBinary = new File(Globals.GC_FIREFOX_BIN_PATH); 
//    FirefoxBinary ffBinary = new FirefoxBinary(pathToBinary); 
       //firefoxProfile.setPreference("webdriver.load.strategy","unstable"); 
       driver = new FirefoxDriver(); 
      } else if (browser.equalsIgnoreCase("iexplorer")){ 
       System.setProperty("webdriver.ie.driver", System.getProperty("user.dir") + 
            "//resource//drivers//IEDriverServer.exe");   
       DesiredCapabilities capabilities = new DesiredCapabilities(); 
       capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); 
       driver = new InternetExplorerDriver(capabilities); 
      } else if (browser.equalsIgnoreCase("chrome")){ 
       System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir") + 
            "//resource//drivers//chromedriver.exe"); 

我只是猜測,在主頁中有一個懸停的行動,併爲一個瀏覽器,它工作正常,但其他沒有發生....是由於焦點問題?

請讓我知道如何用一個例子

回答

1

解決這個我無法從你的代碼,您正在使用您的頁面對象EEHomePage其構造讓它出來。

因爲,如果你使用的是默認的構造函數,然後你PageFactory將無法初始化您的Web元素,除非它們被@FindBy註釋中定義的,

PageFactory需要的webdriver和Object類作爲參數,並在內部初始化一個對象類

1)無論是在使用@FindBy註釋如下您pageObjects定義webElements:

@FindBy(css=//your locator value here) 
    private WebElement lblShopHeader; 
與提供webDriver.This可以通過兩種方式如下實現

OR

2)定義構造函數和由PageFactory初始化pageobject提供的webdriver webdriver的如下:

EEHomeShop(WebDriver driver){ 

    this.driver=driver; 

    }