在实践中使用 Selenium 2.0 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) {
//...
}
}
传递的 WebDriver 实现应该在某个地方集中控制。我可能需要重写一些 JUnit 行为,我希望这是可能的。
我想这样做是为了避免两件事:
- 代码重复:如果每个测试用例都会在@Before中初始化所有被测试的浏览器,那么测试套件将有很多难以维护的重复代码。
- 测试套件的速度:如果我对顺序进行集中控制并通过 WebDriver 实现,我可以轻松地打开例如 Firefox,运行其中的所有测试用例,关闭它并打开下一个浏览器。如果每个测试用例都能够自行打开和关闭浏览器,那么每次测试运行都会增加大量时间。
有人知道我该怎么做吗?谢谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
评论(3)
晌融 2024-12-09 16:41:56
请检查 ISFW 它支持 selenium webdriver/remote webdriver 以及传统的 (selenium1) rc 方式。
您需要使用常规 selenium api 编写代码
例如,
selenium.open(url);
selenium.type("loc", "text to type");
selenium.submit("loc");
这是工作演示。根据您的要求设置浏览器字符串。
该固件支持 selenium 传统方式以及 selenium 2 webdriver。您需要在应用程序属性中设置适当的浏览器字符串。以下是 Firefox 的不同浏览器配置:
- *firefox - 需要在配置的主机/端口上运行的 selenium 服务器
如果未找到,则固件将在 locahost/port - firefoxDriver 上检查/启动一个 - 将直接使用 firefox Web 驱动程序运行,无需
selenium 服务器 - firefoxRemoteDriver - 需要运行的 selenium 服务器
配置的主机/端口,如果找不到,则固件将检查/启动一个
locahost/port,它将在主机上使用 firefox web 驱动程序运行测试
机器
IE 的方式相同 - *iexplore、*iehta、iexplorerDriver、iexplorerRemoteDriver
等等。
~没有更多了~
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
在 Selenium 项目中,我们使用 "="">http://code.google.com/p/selenium/source/browse/trunk/java/client/test/org/openqa/selenium/AbstractDriverTestCase.java 然后我们的构建调用浏览器,我们在其中运行测试。
查看我们的代码库以获得一些灵感!
In the Selenium project we inject what we need using http://code.google.com/p/selenium/source/browse/trunk/java/client/test/org/openqa/selenium/AbstractDriverTestCase.java and then our build calls the browser and we get tests running in it.
Have a look at our code base to get some inspiration!