2014-08-29 105 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

相关问题