在实践中使用Selenium 2.0 WebDriver

Ond*_*tes 7 junit selenium webdriver

我想在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) {
        //...
    }

}
Run Code Online (Sandbox Code Playgroud)

传递的WebDriver实现应该集中控制.我可能需要覆盖一些JUnit行为,我希望它是可能的.

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

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

有人知道我该怎么办?谢谢.

use*_*594 1

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

\n\n
selenium.open(url);\nselenium.type("loc", "text to type");\nselenium.submit("loc");\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是工作演示。根据您的要求设置浏览器字符串。\n 该固件支持 selenium 常规方式以及 selenium 2 webdriver。您需要在应用程序属性中设置适当的浏览器字符串。以下是 Firefox 的不同浏览器配置:

\n\n
    \n
  • *firefox - 需要在配置的主机/端口上运行的 selenium 服务器\n如果未找到,那么固件将在 locahost/端口上检查/启动一个服务器
  • \n
  • firefoxDriver \xe2\x80\x93 将直接使用 firefox Web 驱动程序运行,无需\nselenium 服务器
  • \n
  • firefoxRemoteDriver - 需要在已配置的主机/端口上运行\n的硒服务器,如果找不到,则固件将在\nlocahost/端口上检查/启动一个服务器,它将使用主机上的 firefox Web 驱动程序运行测试\n机器
  • \n
\n\n

对于 IE 也是如此 - *iexplore、*iehta、iexplorerDriver、iexplorerRemoteDriver\n 等等。

\n