zoukankan      html  css  js  c++  java
  • 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; 
        } 
    } 
    

      

  • 相关阅读:
    JAVA集合框架01
    java基础===>点餐系统
    java基础===>数组的应用
    java基础===>双重循环打印图形
    java基础 ===》循环结构
    JAVA基础==>witch的应用!
    选择结构!
    路由系统
    flask使用及返回值、配置文件的四种方式
    短信验证码操作
  • 原文地址:https://www.cnblogs.com/printN/p/7258705.html
Copyright © 2011-2022 走看看