HtmlUnit简单用法

Contents

1. 作用 

2. 获得数据 

3. 模拟点击 

4. 超链接 

5. 关闭 

6. js支持 



注意:

webClient.setCssEnabled(false);  不使用css

webClient.setJavaScriptEnabled(false);  //不使用js

或者:

webClient.getOptions().setJavaScriptEnabled(true);  

//  webClient.getOptions().setActiveXNative(false);  

webClient.getOptions().setCssEnabled(false);  



1. 作用

多用于模拟用户点击

 

 

 

2. 获得数据

2.1.  获得网页数据,初始化

final WebClient  webClient = new WebClient();

HtmlPage page ;

/**

 * 初始化

 */

void init(){

String url1 = "http://127.0.0.1:8080/ActivityWeb/Web/User/MyJsp.jsp";

webClient.setCssEnabled(false);

webClient.setJavaScriptEnabled(false);

   

    try {

page=webClient.getPage(url1);

catch (FailingHttpStatusCodeException e) {

// TODO Auto-generated catch block

e.printStackTrace();

catch (MalformedURLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

 

 

2.2. 输出htmlPage数据

/**

 * 输出所有内容

 * @param page

 */

void printAllText(HtmlPage page){

System.out.println(page.asText());

//webClient.closeAllWindows(); //未必要close

}

 

 

 

 

 

3.  模拟点击

3.1. 例子

/**

 * 模拟提交表单

 */

void actionTest(HtmlPage page){

//获取表单 

final HtmlForm form = page.getFormByName("f");

//获取提交按扭

final HtmlSubmitInput button = form.getInputByName("s1");

//一会得输入的

final HtmlTextInput textField = form.getInputByName("wd");

textField.setValueAttribute("魔兽世界");

//点击提交表单

try {

//[1]仅提交

//button.click();

//[2]提交后接收新页面

final HtmlPage page2 = button.click();

printAllText(page2);

catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

 

3.2. Input控件

(a) HtmlForm 表单:

//由表单获得控件

HtmlTextInput startTimeText = form.getInputByName("start_date");

(b) HtmlSubmitInput 提交控件

//点击并获得新页面

HtmlPage  page2 = button.click();

 

(c) HtmlTextInput 输入框

//修改value

inputText.setValueAttribute(Str);

 

 

(d) HtmlRadioButtonInput 单选框

//设置选中

radio.setChecked(true);

 

(e) HtmlImageInput  图片

//点击并获得新页面

HtmlPage  page2 = (HtmlPage)Image.click();

 

 

(f) HtmlSelect 下拉选择   HtmlOption选择其中的一项

//获得下拉单 page中通过id获得

HtmlSelect hs = (HtmlSelect) page.getElementById("ddlVesselName");

//获得下拉单中的一项

HtmlOption ho= hs.getOptionByValue("CSCOK");  //通过value

HtmlOption ho = hs.getOptionByText("Text");   //通过内容<option>text</option >

HtmlOption ho = hs.getOptionByText("Text");   //通过内容<option>text</option >

HtmlOption ho = hs.getOption(index);      //通过下标 

hs.getOptions() ;        //获得全部

hs.getOptionSize();         //获得size

 

//选中

ho.setSelected(true);

 

 

 

 

 

4. 超链接

Java代码 

// 或取一个<a>的超链接   

//HtmlAnchor anchor = (HtmlAnchor) page.getAnchorByName("welcome");   

        page = (HtmlPage) page.getAnchorByName("welcome").click();   

        String pageContent = page.getWebResponse().getContentAsString();   

        System.out.println(pageContent);  

 

 

 

5. 处理table

a. 获得table

1) 由tableID获得

HtmlTable  table = (HtmlTable)page.getElementById("tableId");

2) 由tableName获得

DomNodeList<HtmlElement> tables2 = ahtmpr .getElementsByTagName("tableName"); 
final HtmlTable table = (HtmlTable) tables2.get(tables2 .size() - 1); 

 

 

 

b. 将table数据存放在map中,key值为1…n

Map<String, String[]> map = new HashMap<String, String[]>(); 

int key = 1; 

for (final HtmlTableRow row : table.getBodies().get(0).getRows()) { 

String[] alertPring = new String[7]; 

int d = 0; 

for (final HtmlTableCell cell : row.getCells()) { 

alertPring[d] = cell.asText(); 

d++; 

    map.put(key +"", alertPring); 

    key++; 

}

 

 

 

 

 

6. 关闭

webClient.closeAllWindows();

 

 

 

7. js支持

a. 获得js方法名

HtmlInput input = form.getInputByName("ctl00$ASPxSplitter2$ContentPlaceHolder1$SearchPages$cbVessel");

String functionName_onKeyDown = input.getOnKeyDownAttribute();  //获得onkekDown方法名

 

b. 执行js方法

ScriptResult exportResult = page.executeJavaScript(“javascript:wrapperSetCube(‘/ddp’)”);

page = (HtmlPage) scriptPage.getNewPage();

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值