我已经筛选了一段时间堆栈上的答案,并且遇到了一些工作的例子,这些工作似乎完成了这一点,或者至少很接近。
我所希望能够做的就是将selenium测试用例导出为JUnit4文件,将它们带入eclipse并根据需要进行修改,然后能够从测试套件中添加或删除它。当测试套件运行时,它应该打开一个Web驱动程序窗口并运行每个测试用例,就像它在基本Firefox窗口上的selenium IDE中运行一样。唯一的问题似乎是web驱动程序类。我尝试过在测试用例类之间引用它,这似乎可以保持窗口打开而不会抛出错误,但第二个测试用例永远不会运行,就像它陷入循环一样,或者停在@之前
import static org.junit.Assert.fail;
import java.util.concurrent.TimeUnit;
import org.junit.After;
import org.junit.Before;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
@RunWith(Suite.class)
@SuiteClasses({TestCase1.class,TestCase2.class})
public class RunTestSuite {
}
^^^测试套件示例^^^
import java.util.regex.Pattern;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
public class TestCase1 {
private WebDriver driver;
private String baseUrl;
private boolean acceptNextAlert = true;
private StringBuffer verificationErrors = new StringBuffer();
@Before
public void setUp() throws Exception {
driver = new FirefoxDriver();
baseUrl = "http://www.google.com/";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
@Test
public void testOpen() throws Exception {
driver.get(baseUrl + "");
}
private boolean isElementPresent(By by) {
try {
driver.findElement(by);
return true;
} catch (NoSuchElementException e) {
return false;
}
}
private boolean isAlertPresent() {
try {
driver.switchTo().alert();
return true;
} catch (NoAlertPresentException e) {
return false;
}
}
private String closeAlertAndGetItsText() {
try {
Alert alert = driver.switchTo().alert();
String alertText = alert.getText();
if (acceptNextAlert) {
alert.accept();
} else {
alert.dismiss();
}
return alertText;
} finally {
acceptNextAlert = true;
}
}
}
^^^测试用例1^^^
import java.util.regex.Pattern;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
public class TestCase2 {
private WebDriver driver;
private String baseUrl;
private boolean acceptNextAlert = true;
private StringBuffer verificationErrors = new StringBuffer();
@Before
public void setUp() throws Exception {
if (TestCase1.driver != null) {
driver = TestCase1.driver;
} else {
driver = new FirefoxDriver();
}
baseUrl = "http://www.google.com/";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
@Test
public void testOpen() throws Exception {
driver.get(baseUrl + "");
}
@After
public void tearDown() throws Exception {
//driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
}
}
private boolean isElementPresent(By by) {
try {
driver.findElement(by);
return true;
} catch (NoSuchElementException e) {
return false;
}
}
private boolean isAlertPresent() {
try {
driver.switchTo().alert();
return true;
} catch (NoAlertPresentException e) {
return false;
}
}
private String closeAlertAndGetItsText() {
try {
Alert alert = driver.switchTo().alert();
String alertText = alert.getText();
if (acceptNextAlert) {
alert.accept();
} else {
alert.dismiss();
}
return alertText;
} finally {
acceptNextAlert = true;
}
}
}
^^^测试用例2^^^
感谢您的帮助!
您必须将驱动程序实例的访问修饰符从private更改为static public,以便第二个类可以访问它。还要确保两个类位于同一个包中。
这是它在TestCase1类中应该是什么样子
public static WebDriver driver;
我试过了,效果很好。
主要内容:1 概述,2 创建简单的Maven项目,3 项目包装结构,4 更新pom.xml文件中的JUnit依赖关系,5 创建LoginService.java和LoginServiceTest.java,,6.创建UserService.java和UserServiceTest.java,7 创建测试套件,8 结论1 概述 在本指南中,我们将学习如何一次运行多个测试类。将Suite用作运行程序可以使您手动构建一个包含许多类测试的套件。它等效于JUnit 3.8.x静态Test suite()方
问题内容: 我正在运行运行移动鼠标并单击()的测试。为了改善调试和查看体验,我想查看鼠标光标当前所在的位置。使用上述方法不会移动系统鼠标光标。 问题答案: 在每个页面加载后执行javascript,以启用鼠标光标显示。 这取决于目标页面中加载的JQuery beeing-也可以使用没有精美动画的另一种解决方案。
在Maven项目中,我有一些现有的测试依赖于JUnit4。由于多种原因,我无法在JUnit5中迁移这些测试。 本质上,一些测试依赖于使用JUnit4运行程序的库,代码迁移可能需要时间。 我同样希望用JUnit5创建新的测试类,它现在发布并提供了新的有趣的特性。 如何做到这一点?
我有两个TestSuite类(和) 他们看起来是这样的: 如何并行运行它们?我运行一个这样的测试$mvn class test-Dtest=TestSuiteOne 但我如何同时运行它们呢?
问题内容: 如果该类是由Test-Suite发起的,是否有办法知道JUnit 4测试类?我有要在所有测试之前运行的全局性内容(关于内存中的数据库),因此我想在测试服中进行。但是,我仍然希望能够在没有Test- Suit的情况下一次启动一个测试,因此我需要知道是否需要在测试的@Before部分中初始化全局对象……有人知道吗?如果它是可能的 ? 问题答案: 有几种方法可以实现此目的。最简单,最简单的方
我有几十个Selenium Webdriver测试。我想一次完成所有的任务。如何运行测试,使每个测试都不会打开新的Webdriver浏览器窗口?