htmlunit使用

public class helloHtmlUnit{
public static HtmlPage resultPage;
public static HtmlPage page;
public static boolean working = false;
public final static String url = "";
static WebClient webClient;
/**
* 连接获取注册页面
* @throws FailingHttpStatusCodeException
* @throws MalformedURLException
* @throws IOException
* @throws InterruptedException 
*/
public static void open() throws FailingHttpStatusCodeException, MalformedURLException, IOException, InterruptedException {
     //创建一个webclient
webClient = new WebClient();
         //htmlunit 对css和javascript的支持不好,所以请关闭之
         webClient.getOptions().setJavaScriptEnabled(true);
         webClient.getOptions().setCssEnabled(true);
         webClient.getOptions().setRedirectEnabled(true);// 3 启动客户端重定向
         webClient.getOptions().setThrowExceptionOnScriptError(false);
//         webClient.getOptions().setTimeout(50000);
         webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
         webClient.getOptions().setThrowExceptionOnScriptError(false);
         webClient.setAjaxController(new NicelyResynchronizingAjaxController());
         //获取注册页面(
         page = webClient.getPage(url);
         webClient.waitForBackgroundJavaScript(30000);
}

/**
* 显示信息
* @param str 信息
*/
public static void showMessage(final String str) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
JOptionPane.showMessageDialog(null, str);
}
});
}

/**
* 判断邮箱是否已注册
*/

public static void isRegister() throws Exception {
if (page == null) {
open();
Thread.sleep(3000L); 
}
HtmlForm form = page.getFormByName("UnifiedSysUserDetailDataForm");  
//       获取提交按钮
         HtmlButtonInput button = form.getInputByName("liteRegistrationButton");
HtmlTextInput UserContact_EmailAddress = (HtmlTextInput) form.getInputByName("UserContact_EmailAddress"); //电子邮箱 
         UserContact_EmailAddress.type("214@qq.com");
         Event event=new Event(); 
         //获取input上邮箱上的onblur事件,依次类推其他事件;
event.setEventType(Event.TYPE_BLUR); 
HtmlPage hpm=UserContact_EmailAddress.click(event); 
//         Thread.sleep(3000L); 
         String tx=hpm.asText();
         webClient.close();
         if(tx.contains("该邮箱地址已注册, 登录.")){
        System.out.println("该邮箱地址已注册, 登录.");
         }else {
        submittingForm();
         }
}
/**
* 自动注册(提交表单)
* @throws Exception
*/
    public static void submittingForm() throws Exception {
String str2;
    if (page == null) {
open();
}
//     HtmlAnchor link=pageAll.getAnchorByHref("https://www.thermofisher.com/order/catalog/zh/CN/adirect/lt?cmd=partnerMktLogin");
//     HtmlPage pageLogin= link.click();
//     Thread.sleep(1000L); 
         //       获取表单
//     HtmlAnchor linkRegister=pageLogin.getAnchorByHref(urlRegister);
//     HtmlPage page= linkRegister.click();
          HtmlForm form = page.getFormByName("UnifiedSysUserDetailDataForm");  
          List<HtmlForm> forms=page.getForms();
          HtmlForm form2 = forms.get(2);
          System.out.println("停顿.."+form2);
//       获取提交按钮
         HtmlButtonInput button = form.getInputByName("liteRegistrationButton");
//       获取表单项
         HtmlTextInput UserContact_LastName = (HtmlTextInput) form.getInputByName("UserContact_LastName"); //姓
         HtmlTextInput UserContact_FirstName = (HtmlTextInput) form.getInputByName("UserContact_FirstName"); //名
         ……
//       填充表单
         UserContact_LastName.click();
         UserContact_LastName.type("张");
//         UserContact_LastName.setValueAttribute("三");  
//        ……
         Page page3 = page.executeJavaScript("javascript:getValidateEmailAddressInfo();").getNewPage();
         Page page5 = page.executeJavaScript("javascript:getEmailAddressDetail('formObject');").getNewPage();
         for (int i = 0; i < 20; i++) {
             if (page3 != null) {
                   System.out.println("等待ajax执行完毕1");
                   break;
             }
              synchronized (resultPage) {
                   page.wait(500);
              }
        }
         for (int i = 0; i < 20; i++) {
             if (page5 != null) {
                   System.out.println("等待ajax执行完毕2");
                   break;
             }
              synchronized (resultPage) {
                   page.wait(500);
              }
        }
//   
         htmlSelet.getOption(44).setSelected(true);
         UserContact_UserSecretQuestionCode.getOption(1).setSelected(true);
         SecretAnswer.click();
         SecretAnswer.type("dog");
         SecretAnswer.setValueAttribute("dog");
         radioButtonCts.get(0).setChecked(false);
         radioButtonCts.get(1).setChecked(true);
         
//       提交表单


         resultPage = (HtmlPage) button.click();  
         Thread.sleep(3000L); 
         WebResponse res = resultPage.getWebResponse();
         String html = res.getContentAsString(); //
//         String pageContent = page2.getWebResponse().getContentAsString();   
//         //获取页面的TITLE
//         str1 = resultPage.getHead().asXml();
         //获取页面的XML代码
//         str2 = resultPage.asXml();
//         //获取页面的文本
         str2 = resultPage.asText();
         System.out.println(str2);
        //关闭webclient Closes all opened windows, stopping all background JavaScript processing. 
        webClient.close();
    }
    
    
    
    public static void main(String[] args) {  
        try {  
        isRegister();  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTMLUnit是一个Java库,它用于模拟浏览器行为并执行Web页面的自动化测试。下面是一个简单的HTMLUnit使用教程: 1. 首先,你需要在你的Java项目中导入HTMLUnit库。你可以通过在你的构建工具(如Maven或Gradle)中添加以下依赖来实现: ```xml <dependency> <groupId>net.sourceforge.htmlunit</groupId> <artifactId>htmlunit</artifactId> <version>2.53.0</version> </dependency> ``` 2. 创建一个新的Java类,并导入HTMLUnit相关的类和方法: ```java import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.HtmlPage; ``` 3. 在你的代码中创建一个WebClient对象,并启用JavaScript支持(如果需要执行JavaScript): ```java WebClient webClient = new WebClient(); webClient.getOptions().setJavaScriptEnabled(true); ``` 4. 使用WebClient对象获取HtmlPage对象,该对象表示要测试的Web页面: ```java HtmlPage page = webClient.getPage("http://example.com"); ``` 5. 一旦你有了HtmlPage对象,你就可以通过使用HTML DOM模型中的方法来获取页面的元素或执行其他操作。例如,你可以通过元素的ID获取元素: ```java HtmlElement element = page.getElementById("myElementId"); ``` 6. 你还可以模拟用户与页面的交互,例如填写表单、点击按钮等。例如,要填写一个文本框,你可以使用以下代码: ```java HtmlTextInput textField = (HtmlTextInput) page.getElementById("myTextFieldId"); textField.setValueAttribute("Hello, HTMLUnit!"); ``` 7. 最后,记得在使用完毕后关闭WebClient对象,以释放资源: ```java webClient.close(); ``` 这只是一个HTMLUnit的简单使用教程,你可以根据你的具体需求进一步深入学习和了解HTMLUnit的功能和特性。希望对你有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值