【问题标题】:How to run Selenium tests in multiple browsers for cross-browser testing using Java?如何在多个浏览器中运行 Selenium 测试以使用 Java 进行跨浏览器测试?
【发布时间】:2012-08-03 02:54:33
【问题描述】:

我正在使用 Selenium WebDriver 和 Java 和 TestNG 框架。我想一次在一个代码中使用 Firefox、IE、Chrome 进行跨浏览器测试。我只能将 Firefox 初始化为

driver = new FirefoxDriver();

但不能以相同的方式初始化其他浏览器。例如:

driver = new InternetExplorerDriver();

给出错误InternetExplorerDriver cannot be resolved.

driver = new ChromeDriver();

给出错误ChromeDriver cannot be resolved.

如何初始化 IE 和 Chrome 并在所有需要的浏览器中执行我的测试?

【问题讨论】:

  • 你在使用 selenium-server-standalone.jar 吗?如果不将其添加到您的类路径中,并且您不必添加每个浏览器服务器。

标签: java internet-explorer google-chrome firefox selenium-webdriver


【解决方案1】:

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

祝你好运!

【讨论】:

  • @alexey.chumagin: 如何进行配置? config的内容是什么?
  • @NazifaChowdhury:按照java约定,导入如下:import org.openqa.selenium.chrome.ChromeDriver;导入 org.openqa.selenium.firefox.FirefoxDriver;导入 org.openqa.selenium.ie.InternetExplorerDriver;
  • @Ripon Al Wasim。您可以创建一个 xml 文件。并将它解析为任何 xml 文档。
  • @Ripon Al Wasim。浏览器名称放在部分(例如)chrome
【解决方案2】:

创建具有以下内容的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");
  }

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      对于 Java,由于发帖人的问题是要求 Java 答案,I wrote a complete multi-browser parallel window example。

      【讨论】:

        猜你喜欢
        • 2019-05-02
        • 1970-01-01
        • 2020-02-26
        • 1970-01-01
        • 2012-04-03
        • 1970-01-01
        • 2020-01-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多