记录HtmlUnit 模拟浏览器进行健康打卡

1 篇文章 0 订阅
1 篇文章 0 订阅

模拟浏览器

最先想到的是httpClient 不过它功能有点局限性

改用HTMLUnit

htmlunit 是一款开源的java 页面分析工具,读取页面后,可以有效的使用htmlunit分析页面上的内容。项目可以模拟浏览器运行,被誉为java浏览器的开源实现。是一个没有界面的浏览器,运行速度迅速。是junit的扩展之一

maven项目先导入依赖

  <dependency>
      <groupId>net.sourceforge.htmlunit</groupId>
      <artifactId>htmlunit</artifactId>
      <version>2.27</version>
  </dependency>

接下来是代码段,不同的网站各种标签不同,要根据自己网站的css标签进行获取想要的页面元素 包括提交按钮,文本框,radio,CheckBox

package org.example;
import com.gargoylesoftware.htmlunit.AlertHandler;
import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.Page;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.DomElement;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
public class App
public static void main( String[] args ){
        // 实例化Web客户端
        WebClient webClient = new WebClient(BrowserVersion.CHROME); 
        //htmlunit对css支持不好,禁用
        webClient.getOptions().setCssEnabled(false);
        //javascript alert处理
         try{
             webClient.setAlertHandler(new AlertHandler() {
                 @Override
                 public void handleAlert(Page page, String message) {
                     System.out.println("提示:"+message);
                 }
             });
             //获取目标页面
             HtmlPage page = webClient.getPage("http://www.xxx.com");
             //用户名,并赋值
             DomElement log_username = page.getElementById("log_username");
             log_username.setAttribute("value","XXXXX");
             //密码框,并赋值
             DomElement log_password = page.getElementById("log_password"); 
             log_password.setAttribute("value","xxxxxx");
                
             //点击登录
             DomElement a = page.getElementsByTagName("a").get(1);
             HtmlPage page1 = a.click();
             
             //点击日常打卡
             DomElement a1 = page1.getElementsByTagName("a").get(14);
             HtmlPage page2 = a1.click();

             //  点击健康打卡
             DomElement a2 = page2.getElementsByTagName("a").get(31);
             HtmlPage page3 = a2.click();

             //点击开始填报
             DomElement input = page3.getElementsByTagName("input").get(6);
             HtmlPage page4 = input.click();
               //为radio和CheckBox赋值
             DomElement radio1 = page4.getElementsByTagName("input").get(7);
             radio1.setAttribute("checked","true");

             DomElement radio2 = page4.getElementsByTagName("input").get(11);
             radio2.setAttribute("checked","true");

             DomElement checkbox = page4.getElementsByTagName("input").get(20);
             checkbox.setAttribute("checked","true");
             //填所在地及温度
             DomElement location = page4.getElementsByTagName("input").get(8);
             location.setAttribute("value","XXXX");

             DomElement tempature = page4.getElementsByTagName("input").get(26);
             tempature.setAttribute("value","XXXX");
             //提交保存
             DomElement tijiao = page4.getElementsByTagName("input").get(28);
             tijiao.click();

             //查看打卡记录,验证是否打卡成功
             DomElement record = page1.getElementsByTagName("a").get(16);
             HtmlPage page6 = record.click();
             //获取健康表格
             DomElement table = page6.getElementById("ctl00_cph_right_gv3");
             System.out.println(table.asText());

         }catch (Exception e){
               e.printStackTrace();
         }
          webClient.close();
    }
  }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值