`
zjx2388
  • 浏览: 1325082 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

htmlunit带框架的简单处理测试demo

    博客分类:
  • J2EE
阅读更多
package com.htmlunit.test;

import java.io.IOException;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.List;

import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlImageInput;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlPasswordInput;
import com.gargoylesoftware.htmlunit.html.HtmlTable;
import com.gargoylesoftware.htmlunit.html.HtmlTableCell;
import com.gargoylesoftware.htmlunit.html.HtmlTableRow;
import com.gargoylesoftware.htmlunit.html.HtmlTextInput;

public class ProccessInfoTest_0 {

	public static void main(String[] args) throws FailingHttpStatusCodeException, MalformedURLException, IOException {
		WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3);
		
		webClient.setThrowExceptionOnFailingStatusCode(false);
		webClient.setThrowExceptionOnScriptError(false);
		webClient.setJavaScriptEnabled(false);

	    HtmlPage page = webClient.getPage("http://......./index.jsp");

	    HtmlForm form = page.getFormByName("myform");

	    HtmlImageInput button = form.getInputByName("loginit");
	    HtmlTextInput name = form.getInputByName("userName");
	    HtmlPasswordInput password = form.getInputByName("password");

	    // Change the value of the text field
	    name.setValueAttribute(".....");
	    password.setValueAttribute("......");

	    // Now submit the form by clicking the button and get back the second page.
	    page = (HtmlPage) button.click();
	    
	    webClient.setJavaScriptEnabled(true);
	    
	    String url2 = "";
	    url2 = "http://....../processInfo.htm";
	    HtmlPage framepage = webClient.getPage(url2);
	    
//	    System.out.println(framepage.asXml());
	    
//	    System.err.println("**********************************************************");
	    
	    
//	    webClient.setJavaScriptEnabled(true);
	    HtmlPage treepage = (HtmlPage)framepage.getFrameByName("treeframe").getEnclosedPage();
//	    System.out.println(treepage.asXml());
//	    webClient.setJavaScriptEnabled(true);
	    
	    HtmlElement body = treepage.getBody();
		HtmlTable table = (HtmlTable)body.getElementById("mytable");
		List<HtmlElement> list = table.getElementsByTagName("tr");
		List newlist = new ArrayList();
		for (int i = 0; i < list.size(); i++) {
			HtmlElement element = list.get(i);
			
			String patch = "/html/body/table/tbody/tr/td/table/tbody/form/tr["+i+"]";
			List<?> foundElements = treepage.getByXPath(patch);
			if(foundElements.size()!=0){
				HtmlElement temp = (HtmlElement)foundElements.get(0);
				String tempstr = temp.asText().trim().replace("\n", "").replace("\r", "");
				if(tempstr!=null && !"".equals(tempstr))
				newlist.add(tempstr.replace("\t", "#"));
				System.out.println(i+"."+tempstr);
			}
		}
		System.err.println("*************************************");
//		System.err.println("==============================================================");
		List<?> items = treepage.getByXPath("/html/body/table/tbody/tr/td/table/tbody/form/tr");
		if(items.size()>0){
//			webClient.setJavaScriptEnabled(true);
//			List<HtmlElement> item = (List<HtmlElement>)items.get(1);
			HtmlTableRow tr = (HtmlTableRow) items.get(1);
			HtmlTableCell td = tr.getCell(3);
			System.out.println(td.asXml());
//			webClient.setJavaScriptEnabled(true);
//			item.click();
			td.click();
		}
		
		
//	    System.err.println("=============================messageframe=================================");
	    
	    HtmlPage messageframe = (HtmlPage)framepage.getFrameByName("messageframe").getEnclosedPage();
//	    System.out.println(messageframe.asXml());
//	    System.out.println(messageframe.asText());
	    
	    webClient.setJavaScriptEnabled(false);
	    System.err.println("=============================contentArea=================================");
	    HtmlPage contentArea = (HtmlPage)messageframe.getFrameByName("contentArea").getEnclosedPage();
	    HtmlPage content = (HtmlPage)contentArea.getFrameByName("content").getEnclosedPage();
	    System.out.println(content.asXml());
	}

}

 

执行脚本的示例:

     webClient.setJavaScriptEnabled(true);
     page.executeJavaScript("document.myform.submit()");

分享到:
评论

相关推荐

    htmlunit测试框架

    htmlunit测试框架,是基于java junit测试框架

    HtmlUnit 爬虫Demo

    通过学习和理解这个Demo,开发者可以掌握如何在实际项目中运用HtmlUnit来构建高效的网络爬虫,处理各种复杂的网页结构和动态内容。不过,需要注意的是,进行网络爬虫时应遵守相关法律法规,尊重网站的robots.txt规则...

    htmlunit-2.14

    7. **集成测试框架**:HTMLUnit可以与JUnit、TestNG等测试框架无缝集成,方便编写单元测试和集成测试。通过这些框架,可以组织和运行一系列的测试用例,确保应用程序在不同场景下的正确性。 8. **性能优势**:由于...

    自定义htmlunit,取消htmlunit自带的log打印功能

    自定义htmlunit,取消htmlunit自带的log打印功能,最近研究htmlunit发现它自带的log信息比较讨厌有些错误自己已经拦截,他还会打印以便而且带着大量html代码,强迫症的人看到错误就想去点点 其实只是加载js出错。...

    Htmlunit2.23-bin.zip

    HTMLUnit是一个强大的Java库,它模拟了一个无头Web浏览器,主要用于自动化测试和网页抓取。在版本2.23的zip文件中,我们主要关注HTMLUnit的核心功能和它如何帮助开发者处理HTML内容。 HTMLUnit的核心是基于Jakarta ...

    htmlunit-2.29.zip

    HTMLUnit是一个强大的自动化测试工具,尤其适用于Web应用程序的测试。...这个"htmlunit-2.29.zip"文件...开发者可以通过解压这个文件,参考API文档,快速地将HTMLUnit集成到自己的测试框架中,提升测试的效率和准确性。

    htmlunit-2.27-bin

    在实际应用中,HTMLUnit可以与JUnit或其他测试框架结合,编写测试脚本来自动化测试Web应用。例如,你可以创建一个HTMLUnit测试用例,打开网页,模拟用户登录,然后检查特定元素是否显示正确。此外,由于HTMLUnit支持...

    htmlunit源码

    8. **测试框架集成**:HTMLUnit常与JUnit等测试框架结合使用,编写自动化测试用例,验证网页应用的功能和行为。 9. **性能**:由于其无头特性,HTMLUnit比使用真实浏览器进行测试和抓取更快速、轻量级,尤其适用于...

    htmlunit-2.3..zip

    HTMLUnit基于Java语言,因此它可以轻松集成到Java开发环境中,利用JUnit等测试框架进行测试。 压缩包“htmlunit-2.3”中包含的主要文件可能是以下几个部分: 1. HTMLUnit的核心库(htmlunit.jar):这是HTMLUnit的...

    htmlunit 及其 依赖包

    HTMLUnit是一个功能强大的Java库,它模拟了一个无头Web浏览器,允许开发者进行自动化网页测试和网络爬虫工作。这个库的核心在于它能够解析HTML、执行JavaScript,并与网页上的元素进行交互,而无需真实地打开一个...

    htmlUnit所需jar包

    7. **测试支持库**:如果用于测试,可能会包含JUnit或其他测试框架的jar,以便编写和执行测试用例。 为了能够使用这些jar包,开发者需要将它们添加到Java项目的类路径(classpath)中。在IDE如Eclipse或IntelliJ ...

    Htmlunit2.8开发文档

    HtmlUnit可以方便地与JUnit、TestNG等测试框架集成,创建自动化测试套件。 6. **源码示例** 提供的开发文档中应该包含多个示例源码,这些示例涵盖了各种使用场景,可以帮助你更好地理解和使用HtmlUnit。 7. **...

    htmlunit2.9

    9. **集成测试**: HTMLUnit可以与其他测试框架(如JUnit、TestNG)结合使用,构建全面的Web应用自动化测试。通过编写测试用例,可以检查应用程序的功能和行为。 10. **版本更新**: HTMLUnit 2.9是较旧的版本,可能...

    htmlunit基本jar包

    HTMLUnit是一个Java库,它提供了一个无头浏览器模拟器,用于自动化Web页面的测试和交互。这个"htmlunit基本jar包"包含了运行HTMLUnit所需的所有核心组件,无需通过Maven来管理和依赖。这意味着用户可以直接在项目中...

    htmlunit-2.19-bin

    7. **与其他工具的集成**:HTMLUnit可以与JUnit、TestNG等测试框架集成,便于构建自动化的测试套件。此外,也可以与Selenium WebDriver结合,增强其功能,特别是在处理现代Web应用时。 8. **性能优势**:由于...

    htmlunit所需要jar包

    2. **commons-collections-3.2.1.jar**:Apache Commons Collections是Java集合框架的扩展,提供了许多额外的数据结构和算法,增强了集合操作的效率和便利性,对于HTMLUnit处理数据结构有很大帮助。 3. **cssparser...

    htmlunit爬虫.rar

    10. **爬虫框架的应用**:除了HTMLUnit,项目可能还结合了其他Java爬虫框架,如Jsoup或Apache HttpClient,以增强爬虫的功能和易用性。 通过学习和实践这个“htmlunit爬虫”项目,你将能够深入理解HTMLUnit的工作...

    htmlunit2.8

    HtmlUnit 是 JUnit 的扩展测试框架之一。HtmlUnit 将返回文档模拟成 HTML,这样您便可以直接处理这些文档了。HtmlUnit 使用例如 table、form 等标识符将测试文档作为 HTML 来处理。它同样需要遵循 JUnit 测试框架...

    htmlunit依赖的所有jar

    创建一个简单的HTMLUnit测试用例可能如下所示: ```java import org.openqa.selenium.htmlunit.HtmlUnitDriver; public class HtmlUnitTest { public static void main(String[] args) { HtmlUnitDriver ...

    htmlunit-2.1.5源码

    HTMLUnit是一个Java库,它模拟了一个无头Web浏览器,用于自动化网页测试和抓取。它提供了JavaScript支持,能够处理AJAX请求,使开发者能够在没有实际图形界面的情况下与网页交互。这个"htmlunit-2.1.5源码"包包含了...

Global site tag (gtag.js) - Google Analytics