html 页面工具,html页面工具-htmlUnit

HtmlUnit测试工具的推出,创意非常好。是一款给java开发用的browser。说它是browser,其实它是对html建模并且提供API来访问页面,点击链接等等的java类库。

这样的测试工具有这样几个优点:

运行起来没有界面,速度非常快。

由于是java类库,有无限扩展的可能,可以构造各种功能强大的工具。包括本地化测试,多种数据源输入数据。

跨平台,跨浏览器。java本身就有跨平台的特性,浏览器,只要简单的设定一个参数就可以轻易模仿想要的浏览器了。

转化为性能测试,非常简单,可以共享同一脚本。

官网:http://htmlunit.sourceforge.net/

代码示例:

import java.io.IOException;

import java.net.MalformedURLException;

import java.net.URL;

import java.util.Arrays;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

import com.gargoylesoftware.htmlunit.BrowserVersion;

import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;

import com.gargoylesoftware.htmlunit.HttpMethod;

import com.gargoylesoftware.htmlunit.WebClient;

import com.gargoylesoftware.htmlunit.WebRequest;

import com.gargoylesoftware.htmlunit.html.HtmlForm;

import com.gargoylesoftware.htmlunit.html.HtmlInput;

import com.gargoylesoftware.htmlunit.html.HtmlPage;

import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;

import com.gargoylesoftware.htmlunit.util.NameValuePair;

public class MySina {

private WebClient client;

private WebRequest request;

private String sinaLoginUrl = " http://mail.sina.com.cn/cgi-bin/login.php";

private String hostSinaUrl = "";

public static void main(String[] args) throws FailingHttpStatusCodeException, MalformedURLException, IOException {

String username = "***";

String password = "***";

String newpassword = "***";

String nickname = "***";

MySina mySina = new MySina();

if (mySina.mailLoginBySina(username, password)) { // 登录

mySina.updatePwdBySina(password, newpassword); // 修改密码

mySina.updateNickName(nickname); // 修改帐户昵称

} else {

System.out.println("登录失败!请检查用户名和密码是否正确!");

}

}

public MySina(){

client = new WebClient(BrowserVersion.INTERNET_EXPLORER_8);

client.setJavaScriptEnabled(false);

}

/**

* 更改帐户昵称

*

* @param nickname 昵称

* @return boolean

* @throws FailingHttpStatusCodeException

* @throws IOException

*/

public boolean updateNickName(String nickname) throws FailingHttpStatusCodeException, IOException {

String sinaSetUrl = hostSinaUrl + "basic/setting_account";

request = new WebRequest(new URL(sinaSetUrl), HttpMethod.POST);

request.setCharset("utf-8");

request.setRequestParameters(Arrays.asList(new NameValuePair("nickname", nickname), new NameValuePair("pop3",

"on"),

new NameValuePair("imap", "on")));

client.getPage(request);

HtmlPage p = client.getPage(hostSinaUrl + "classic/index.php");

if (p.getBody().getTextContent().indexOf(""NickName":"" + nickname + """) > 0) {

return true;

} else {

return false;

}

}

/**

* 修改密码

*

* @param oldpassword 旧密码

* @param newpassword 新密码

* @return boolean

* @throws FailingHttpStatusCodeException

* @throws IOException

*/

public boolean updatePwdBySina(String oldpassword, String newpassword) throws FailingHttpStatusCodeException,

IOException {

String sinaSetUrl = " http://login.sina.com.cn/member/security/password.php";

request = new WebRequest(new URL(sinaSetUrl), HttpMethod.POST);

request.setCharset("gbk");

request.setRequestParameters(Arrays.asList(new NameValuePair("pass", oldpassword),

new NameValuePair("pass1", newpassword),

new NameValuePair("pass2", newpassword)));

HtmlPage p = client.getPage(request);

if (p.getBody().getTextContent().indexOf("您的密码修改成功") > 0) {

return true;

} else {

return false;

}

}

/**

* 登录

*

* @param username 用户名

* @param password 密码

* @return boolean

* @throws FailingHttpStatusCodeException

* @throws MalformedURLException

* @throws IOException

*/

public boolean mailLoginBySina(String username, String password) throws FailingHttpStatusCodeException,

MalformedURLException, IOException {

HtmlPage loginPage = client.getPage(sinaLoginUrl);

HtmlForm loginForm = loginPage.getFormByName("free");

HtmlInput u = loginForm.getInputByName("u");

HtmlInput psw = loginForm.getInputByName("psw");

HtmlSubmitInput loginButton = loginForm.getInputByName("登录");

u.setValueAttribute(username);

psw.setValueAttribute(password);

HtmlPage result = loginButton.click();

String resultUrl = result.getUrl().toString();

if (resultUrl.indexOf("classic/index.php") > 0) {

String regex = "http://(.*?)/";

hostSinaUrl = myRegex(resultUrl, regex, null);

if (hostSinaUrl.length() > 0) {

return true;

} else {

return false;

}

} else {

return false;

}

}

/**

* 正则匹配替换

*

* @param str

* @param reg

* @param replace

* @return

*/

public String myRegex(String str, String reg, String[] replace) {

String result = null;

Matcher m = Pattern.compile(reg).matcher(str);

while (m.find()) {

result = m.group();

if (replace != null && replace.length > 0) {

for (String s : replace) {

result = result.replace(s, "");

}

}

}

return result;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值