如何在多个浏览器中使用Java进行跨浏览器测试的Selenium测试?

如何在多个浏览器中使用Java进行跨浏览器测试的Selenium测试?

问题描述:

我正在使用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

对于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

创建的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"); 
    } 

对于Java,因为海报问题问了一个Java的答案, I wrote a complete multi-browser parallel window example

+0

是的,这是好文章。 – 2015-10-06 13:19:02

对于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