我是Selenium和Automation的新手。使用Selenium IDE和我对Java的一般知识,我能够在Eclipse中生成一系列在JUnit上运行的测试用例。现在我的测试目前在我日食时运行并按下[run]。我想将这些测试用例导入Jenkins / Hudson。有两种方法我更喜欢做CI。
安排时间(每周一次)以完成测试并发送结果电子邮件。
将我的测试用例上传到GitHub上的存储库,当对存储库进行了更改时,运行测试和/或按计划(每周一次)。
我老实说试图查找教程(视频/文档),但它们似乎都很不清楚。举个例子,我不知道build.xml或POM是什么。
使用Jenkins插件或使用ANT或Maven更好吗?如果是这样,我需要在代码中添加/更改以允许这种情况发生的事情,并在Jenkins中进行配置。
我的示例代码如下:
package Profile;
import java.util.concurrent.TimeUnit;
import java.util.regex.Pattern;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import static org.junit.Assert.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.Select;
import com.opera.core.systems.scope.protos.ExecProtos.ActionList.Action;
public class P_ProfileChangeTestCase {
private WebDriver driver;
private String baseUrl;
private StringBuffer verificationErrors = new StringBuffer();
//Before the test begins, creates a new webdriver and sets the base url
@Before
public void setUp() throws Exception {
driver = new FirefoxDriver();
baseUrl = "http://www.test.com/";
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}
@Test
public void testOpen() throws Exception {
System.out.println("**Starting Profile**");
driver.get(baseUrl);
//Click LogIn
System.out.println("Clicking Log In");
driver.findElement(By.cssSelector("div.button.login > a.link")).click();
//Enter User name
System.out.println("Entering Username");
driver.findElement(By.xpath("//input[@id='login']")).sendKeys("TEST");
//Enter Password
System.out.println("Entering Password");
driver.findElement(By.xpath("//input[@id='login_password']")).sendKeys("PW");
//Click LogIn Button
System.out.println("Submit Log In");
driver.findElement(By.className("login-button")).click();
//Verify user name login by echo name to console
System.out.println("Verify User Log In");
String text = driver.findElement(By.cssSelector("span.username")).getText();
System.out.println("Username is :" + text);
////////////////////////
//Click on Edit Profile
System.out.println("Clicking on Edit Profile Button");
driver.findElement(By.cssSelector("div.button.login")).click();
driver.findElement(By.xpath("//div[@id='mlg-header']/div/div[3]/div/div[7]/div/div[2]/a")).click();
//Change description in profile
System.out.println("Editing the Interests section of profile");
driver.findElement(By.name("interests")).clear();
driver.findElement(By.name("interests")).sendKeys("Edit Profile in Selenium Eclipse");
//Update Profile
System.out.println("Click on submit to change profile");
driver.findElement(By.cssSelector("input[type=\"submit\"]")).click();
//Verify that update has been applied to profile
System.out.println("Verifing that change has been made");
assertEquals("Profile has been updated.", driver.findElement(By.cssSelector("b > b")).getText());
//Console Output of Assert Statement Above
System.out.println("Profile has been updated!");
System.out.println("**Profile Complete!**");
}
@After
public void tearDown() throws Exception {
driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
}
}
private boolean isAlertPresent() {
try {
driver.switchTo().alert();
return true;
} catch (NoAlertPresentException e) {
return false;
}
}
}
答案 0 :(得分:5)
根据您的信息,您可以使用maven项目库创建selenium自动化。在这种情况下,如果您想使用Jenkins作为CI,请执行以下步骤:
答案 1 :(得分:0)
基于发布的代码以及您使用Maven的事实,我会说“mvn clean test”将运行所有单元测试。因此,在Jenkins中创建一个meven项目(因为你需要在Jenkins中使用maven插件),并且在配置中提供“clean test”作为jenkins项目执行的maven目标。
从这里看大图,虽然你的测试被注释为单元测试,但它们不具备单元测试的特性。首先,单元测试应该模拟外部依赖。