今天偶然了解到了Selenium,是一个用于Web应用程序测试的工具,就像真正的用户在操作一样,支持大部分常用浏览器。我花了几个小时的时间,写了一个模拟登陆csdn的单元测试demo,原理是调用浏览器的内核api,例子仅供学习参考,有问题欢迎指正!
开发环境 eclipse jdk1.7 用到的相关jar包
selenium-server-standalone-2.25.0.jar
junit4.0.jar
chromedriver.exe
/**
* 登录账号信息
*/
public class User {
private String webBrowserPath; //浏览器引擎本地路径
private String username; //登录账号
private String password;//登录密码
private String loginUrl;//登录url
public String getWebBrowserPath() {
return webBrowserPath;
}
public void setWebBrowserPath(String webBrowserPath) {
this.webBrowserPath = webBrowserPath;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getLoginUrl() {
return loginUrl;
}
public void setLoginUrl(String loginUrl) {
this.loginUrl = loginUrl;
}
@Override
public String toString() {
return "User [webBrowserPath=" + webBrowserPath + ", username=" + username + ", password=" + password
+ ", loginUrl=" + loginUrl + "]";
}
}
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
/**
*模拟谷歌浏览器登录csdn
*/
public class ChromeTest {
private String webBrowserPath = "E://test//chromedriver.exe";
private WebDriver driver ;
private String loginUrl = "https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn";
private String username = "";//登录账号
private String password = "";//登录密码
private User user = new User();
//设置登录地址、账号、密码、浏览器本地引擎地址
@Before
public void init() {
user.setLoginUrl(loginUrl);
user.setPassword(password);
user.setUsername(username);
user.setWebBrowserPath(webBrowserPath);
System.setProperty("webdriver.chrome.driver",user.getWebBrowserPath());
driver = new ChromeDriver();
}
//登录成功之后推出
@After
public void quitDriver() {
if(null!=driver) {
driver.quit();
}
}
//等一秒
public void waitForSecond() {
try {
Thread.sleep(1000);
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
//登录
@Test
public void login() {
try {
driver.get(user.getLoginUrl());//打开登录地址
waitForSecond();
WebElement userElement = driver.findElement(By.id("username"));//获取账号标签
userElement.sendKeys(user.getUsername());//输入账号
waitForSecond();
WebElement passElement = driver.findElement(By.id("password"));//获取密码标签
passElement.sendKeys(user.getPassword());//输入密码
waitForSecond();
WebElement login = driver.findElement(By.className("logging"));//获取登录按钮
login.click();//点击登录
waitForSecond();
} catch (Exception e) {
e.printStackTrace();
}
}
}