1

我正在使用Selenium WebDriver和Java & TestNG框架。我想一次只用一個代碼就可以使用Firefox,IE,Chrome進行跨瀏覽器測試。我只能將Firefox初始化爲如何在多個瀏覽器中使用Java進行跨瀏覽器測試的Selenium測試?

driver = new FirefoxDriver(); 

但是不能以相同的方式初始化其他瀏覽器。例如:

driver = new InternetExplorerDriver(); 

給出了錯誤InternetExplorerDriver cannot be resolved.

driver = new ChromeDriver(); 

給出了錯誤ChromeDriver cannot be resolved.

我怎麼能初始化IE和Chrome和執行我的所有需要​​的瀏覽器測試?

+0

您正在使用C#或Java? – vidit 2012-08-06 07:40:15

+0

@bemace我正在使用java – 2012-08-08 04:58:57

+0

您使用的是selenium-server-standalone.jar嗎?如果不將它添加到你的類路徑中,並且你不必添加每個瀏覽器服務器。 – Tarken 2012-08-22 08:08:54

回答

4

對於C#

添加

using OpenQA.Selenium.Chrome; 
using OpenQA.Selenium.Firefox; 
using OpenQA.Selenium.IE; 

創建一個配置文件,其中將包含瀏覽器名稱。 實現方法進行交互與配置文件

而且您可以使用下面的代碼初始化瀏覽器:

string browser = GetConfigProperty("browser"); //Get browser name from the config 
     switch (browser) 
     { 
      case "chrome": 
       driver = new ChromeDriver(); 
       break; 
      case "firefox": 
       driver = new FirefoxDriver(); 
       break; 
      case "InternetExplorer": 
       driver = new InternetExplorerDriver(); 
       break; 
     } 

好運!

+0

@ alexey.chumagin:如何進行配置?什麼是配置的內容? – 2012-08-06 07:00:51

+1

@NazifaChowdhury:根據Java約定,導入將如下所示:import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.ie.InternetExplorerDriver; – 2012-08-06 07:02:29

+0

@Ripon Al Wasim。您可以創建一個xml文件。並解析它如何任何XML文件。 – 2012-08-06 08:12:37

1

創建的testng.xml具有以下內容:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="Regression Test" verbose="1"> 
    <test name="Login_IE"> 
    <parameter name="browser" value="iexplore"/> 
     <classes> 
      <class name="com.gb.test.selenium.login.Login" /> 
     </classes> 
    </test> 
    <test name="Login_FF"> 
    <parameter name="browser" value="firefox"></parameter> 
    <classes> 
    <class name="com.gb.test.selenium.login.Login" /> 
    </classes> 
    </test> 
<test name="Login_Chrome"> 
    <parameter name="browser" value="chrome"></parameter> 
    <classes> 
    <class name="com.gb.test.selenium.login.Login" /> 
    </classes> 
    </test> 
</suite> 

現在如下編寫Java代碼的webdriver:

@Parameters({"browser"}) 
    @BeforeClass 
    public void setUp(String browser) {//throws MalformedURLException{ 
     if(browser.equalsIgnoreCase("iexplore")){ 
      File file = new File("E:\\IEDriverServer_Win32_2.29.1\\IEDriverServer.exe"); 
      System.setProperty("webdriver.ie.driver", file.getAbsolutePath()); 
      driver = new InternetExplorerDriver(); 

     } 
     if(browser.equalsIgnoreCase("firefox")){ 
      driver = new FirefoxDriver(); 
     } 
     if(browser.equalsIgnoreCase("chrome")){ 
      File file = new File("F:\\chromedriver_win_22_0_1203_0b\\chromedriver.exe");//v22 
     System.setProperty("webdriver.chrome.driver", file.getAbsolutePath()); 
     driver = new ChromeDriver(); 
     } 

     jse = (JavascriptExecutor) driver; 
     driver.manage().window().maximize(); 
     driver.manage().timeouts().implicitlyWait(DEFAULT_IMPLICIT_WAIT_IN_SECONDS, TimeUnit.SECONDS); 
      driver.get("URLOfSite"); 
    } 
1

對於Ruby中,你可以做以下的,如果你想在所有三個瀏覽器中運行的單碼一前一後:

def all_browsers 
    browsers = [:firefox,:ie,:chrome].each do |br| 
    $driver = Selenium::WebDriver.for br 
    $driver.manage.window.maximize 
    $driver.navigate.to("http://google.com") 
end 
相關問題