【问题标题】:Using Selenium 2.0 WebDriver in practice在实践中使用 Selenium 2.0 WebDriver
【发布时间】:2011-09-03 15:44:07
【问题描述】:

我想在 JUnit 中编写 Selenium 测试用例并在多个浏览器中测试我的项目,我想利用所有 Selenium 驱动程序实现相同接口的事实。

每个测试用例应如下所示:

package fm;

import org.openqa.selenium.WebElement;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import static org.junit.Assert.*;

public class HomepageTest {

    @Test
    public void testTitle(WebDriver driver) {
        driver.get("http://localhost/");
        assertEquals("Foo", driver.getTitle());
    }

    @Test
    public void testSearchForm(WebDriver driver) {
        //...
    }

}

传递的 WebDriver 实现应该在某个地方集中控制。我可能需要重写一些 JUnit 行为,我希望这是可能的。

我想这样做是为了避免两件事:

  • 代码重复:如果每个测试用例都会在@Before 中初始化所有测试过的浏览器,那么测试套件会有很多难以维护的重复代码。
  • 测试套件的速度:如果我对订单进行集中控制并通过了 WebDriver 实现,我可以轻松地打开例如 Firefox,在其中运行所有测试用例,关闭它并打开下一个浏览器。如果每个测试用例都能够自行打开和关闭浏览器,那么每次测试运行都会增加大量时间。

有人知道我该怎么做吗?谢谢。

【问题讨论】:

    标签: selenium junit webdriver


    【解决方案1】:

    在 Selenium 项目中,我们使用 http://code.google.com/p/selenium/source/browse/trunk/java/client/test/org/openqa/selenium/AbstractDriverTestCase.java 注入我们需要的内容,然后我们的构建调用浏览器并在其中运行测试。

    查看我们的代码库以获得一些灵感!

    【讨论】:

      【解决方案2】:

      请检查ISFW 它支持 selenium webdriver/remote webdriver 以及传统的 (selenium1) rc 方式。 您需要使用常规 selenium api 编写代码 例如

      selenium.open(url);
      selenium.type("loc", "text to type");
      selenium.submit("loc");
      

      这里是working demo。根据您的要求设置浏览器字符串。 FW 支持 selenium 常规方式以及 selenium 2 webdriver。您需要在应用程序属性中设置适当的浏览器字符串。以下是 Firefox 的不同浏览器配置:

      • *firefox - 在配置的主机/端口上运行所需的 selenium 服务器 如果未找到,则 fw 将在 locahost/port 上检查/启动一个
      • firefoxDriver – 将直接与 firefox web 驱动程序一起运行,无需 硒服务器
      • firefoxRemoteDriver - 运行所需的 selenium 服务器 如果未找到配置的主机/端口,则 fw 将检查/启动一个 locahost/port,它将在主机上使用 firefox web driver 运行测试 机器

      IE 也一样 - *iexplore, *iehta, iexplorerDriver, iexplorerRemoteDriver 等等。

      【讨论】:

        【解决方案3】:

        我做了你现在/曾经的样子?尝试使用控制 webdriver 的静态类和我所有需要相同 webdriver 的测试从那里获取它。当您运行需要使用同一会话的多个测试时,它确实很有帮助。而且您的所有测试都在一个浏览器中运行,因此并非每个测试都会打开一个新的浏览器实例。

        也许你也应该看看 testNG。我的经验是 testNG 更适合使用 selenium 进行测试,因为它不那么专注于独立测试。它提供了许多有用的功能。

        【讨论】:

          猜你喜欢
          • 2014-05-11
          • 1970-01-01
          • 2017-08-09
          • 2014-10-11
          • 1970-01-01
          • 1970-01-01
          • 2011-06-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多