2017-07-14 37 views
0

我在Selenium webdriver 3.4中使用testNG。我想同時對不同的瀏覽器進行測試。如何使用@BeforeSuite中的testNG @Parameters讀取testng.xml中的值

在我的testng.xml我有

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite name="Demo"> 
    <test name="Demo on Chrome"> 
    <parameter name="browser" value="Chrome" /> 
    <classes> 
     <class name="catalogueMemberPortal.CatalogueTest"/> 
    </classes> 
    </test> 
    <test name="Demo on Firefox"> 
    <parameter name="browser" value="Firefox" /> 
    <classes> 
     <class name="catalogueMemberPortal.CatalogueTest"/> 
    </classes> 
    </test> 
</suite> 

public class BaseClass { 
    public static WebDriver driver; 

    public WebDriver getDriver() { 
     return driver; 
    } 
    @BeforeSuite 
    @Parameters({"browser"}) 
    public void launchBrowser(String browser) throws Exception { 

     if (browser.equalsIgnoreCase("Firefox")){ 

      String ffDriverPath = ((System.getProperty("user.dir")+"/browser_drivers/firefox/geckodriver.exe")) ; 
      System.setProperty("webdriver.gecko.driver",ffDriverPath); 
      driver = new FirefoxDriver(); 
      logger.info("Firefox Initialized"); 
    } 
     // same goes for other type of browsers 

    @AfterSuite 

    public void afterSuite() { 

     driver.close(); 
     driver.quit(); 

    } 
    } 

錯誤我得到

org.testng.TestNGException代碼: 參數 '瀏覽器' 是必需的通過BeforeSuite on方法launchBrowser但未標記@可選或在C:\中定義爲 testng.xml

回答

0

您的瀏覽器參數位於<test>節點中,而不是在<suite>節點中。 在套件級別,該參數不存在。

只需將@BeforeSuite@AfterSuite替換爲@BeforeTest@AfterTest即可。

+0

謝謝你將它改爲@BeforeClass爲我工作。 – Krishna

+0

是的,它也可以工作,因爲一個類包含在''中。 – juherr

相關問題