HtmlUnit - 选择表单,复选框,TextFields和提交按钮

时间:2011-01-29 20:45:41

标签: java forms groovy checkbox htmlunit

我一直在搞乱HtmlUnit,特别是这个网站,因为它有很多我想要习惯的功能。我之前发布过它,但这主要是为了从网站上获取信息,最终取得了成功。现在我想填写表格并提交。

当前测试代码:

def url = "http://www.hidemyass.com/proxy-list/"


client = new WebClient(BrowserVersion.FIREFOX_3)
client.javaScriptEnabled = false

page = client.getPage(url)
form = page.getFormByName("proxyform")

//get portInputField and set value
portField = form.getInputByName("p")
portField.setValueAttribute("80")

//select checkbox 1 & 2 from anonymity level
//click "Update Results"
//get new page url
//grab information
//save

注释掉的部分是我不确定该做什么的地方。我继续尝试,但想询问我应该做什么的输入。

尝试:

def url = "http://www.hidemyass.com/proxy-list/"

page = client.getPage(url)

portField = page.getHtmlElementById("ports").setValueAttribute("80")

submitButton = page.getByXPath("/html/body//form//input[@type='image']")
page2 = submitButton.get(0).click()

println page2    

上面的代码段打印出来: HtmlPage(http://www.hidemyass.com/proxy-list/search-1)@17168934

我希望得到一个新页面,然后我可以从搜索中解析信息。有什么想法吗?

我不相信我使用的语言会产生太多差异;但是,我使用的是Groovy。

修改

我设法得到了我想要的东西,但它返回如下:

HtmlPage(http://www.hidemyass.com/proxy-list/search-1)@23713629
<?xml version="1.0" encoding="UTF-8"?><td>109.123.00.00</td>

有没有办法只获取我正在寻找的信息:<td>109.123.00.00</td>或者我只是需要手动删除信息?

修改

.asText()解决了我的问题,但对CSS提出了一些警告。我应该担心吗?

1 个答案:

答案 0 :(得分:2)

  

有没有办法只获得   我正在寻找的信息:   109.123.00.00或我只是   需要从中删除信息   手动?

这应该有效:

def td = page2.getElementByName("td")
assert td.textContent == "109.123.00.00"

有关从页面提取信息的其他方法,请参阅JavaDoc for HtmlPage。不要手动解析页面。

旁注:由于您已经在使用Groovy,您还可以查看Geb,这是一种流行的基于Groovy的Web自动化和测试工具,比HtmlUnit更方便使用。