2014-08-29 103 views
0

我是TestNG和Selenium的新手。我有這個問題,直到現在沒有任何幫助。 我想創建一個方法來同時運行多個瀏覽器並在需要時調用該方法。下面是我的代碼..問題是當我從另一個類/方法調用它只運行一個瀏覽器作爲參數傳遞。親切指導我在哪裏,我錯了testng在另一種方法中調用參數化方法

public class CommonMethods { 
    WebDriver driver; 

    @BeforeTest 
    @Parameters("browser") 
    public void beforeTest(String browser)throws Exception{ 

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

      driver = new FirefoxDriver(); 
      System.out.println("1"); 
    } 

     if(browser.equalsIgnoreCase("IE")) { 
      System.setProperty("webdriver.ie.driver", "resource\\IEDriverServer.exe"); 
      driver = new InternetExplorerDriver(); 
      System.out.println("2"); 
     } 

     if(browser.equalsIgnoreCase("chrome")){ 
      System.setProperty("webdriver.chrome.driver","resource\\chromedriver.exe"); 
      // To remove message "You are using an unsupported command-line flag: --ignore-certificate-errors. 
      // Stability and security will suffer." 
      // Add an argument 'test-type' 
      ChromeOptions options = new ChromeOptions(); 
      options.addArguments("test-type"); 
      driver = new ChromeDriver(options); 
      System.out.println("3"); 
    } 
    } 


} 

這是的testng.xml文件

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite name="Suite" parallel="tests"> 
<test name="FirefoxTest"> 
<parameter name="browser" value="firefox"/> 
<classes> 
    <class name="mycompqa.helper.Calling"/> 
    <class name="mycompqa.helper.CommonMethods"/> 
</classes> 
</test> <!-- Test --> 

<test name="ChromeTest"> 
<parameter name="browser" value="chrome"/> 
<classes> 
    <class name="mycompqa.helper.Calling"/> 
    <class name="mycompqa.helper.CommonMethods"/>  
</classes> 
</test> 

<test name="IETest"> 
<parameter name="browser" value="IE"/> 
<classes> 
    <class name="mycompqa.helper.Calling"/> 
    <class name="mycompqa.helper.CommonMethods"/> 
</classes> 
</test> 

</suite> <!-- Suite --> 

這是我怎樣,我叫它

package mycompqa.helper; 

    import org.openqa.selenium.WebDriver; 
     import org.testng.annotations.Test; 

     public class Calling { 

     CommonMethods com=new CommonMethods(); 

    @Test 
    public void run() throws Exception{ 
     com.beforeTest("firefox"); 
     WebDriver driver=com.driver; 
     driver.get("http://www.snapdeal.com"); 

} 
} 

下面這段代碼只運行在Firefox瀏覽器,但我想要的是所有的瀏覽器應該同時運行。當我將firefox作爲參數傳遞時,只有該瀏覽器纔會運行。我應該怎麼做才能同時執行所有瀏覽器?

您能否提供一些鏈接,我可以在這些主題上了解更多( ,除了selenium.org和testng.org)?

回答

0

首先你應該使用testng xml來運行測試。但是如果你想要這個設置,你可以創建類CommonMethods的線程,然後你可以創建多個實例並以不同的瀏覽器作爲參數調用。

但我會做這樣

class a { 

Private String Browser; 
WebDriver c; 
@test 
@Parameters("browser") 
public void driver(String Browser) 
//create instance of Webdriver 


    //use the driver 

} 
} 

而且有一個TestNG的這樣的XML

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite name="Suite" parallel="tests"> 
<test name="FirefoxTest"> 
<parameter name="browser" value="firefox"/> 
<classes> 
    <class name="a"/> 
</classes> 
</test> <!-- Test --> 
<test name="ChromeTest"> 
<parameter name="browser" value="Chrome"/> 
<classes> 
    <class name="a"/> 
</classes> 
</test> <!-- Test --> 
+0

哦,好吧!謝謝您的幫助.. :) – 2014-09-01 04:16:53

相關問題