2011-01-29 113 views
2

我一直在搞HtmlUnit的一點點,特別是這個網站,因爲它有很多我想習慣的功能。之前我已經發布過關於它的信息,但主要是爲了抓取最終成功的網站信息。現在我想填寫表格並提交。HtmlUnit - 選擇表單,複選框,TextFields和提交按鈕

電流測試代碼:

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> 

有沒有辦法讓只有我在尋找的信息:​​或做我只需要從它手動剝離信息?

編輯

.asText()解決了我的問題,而是給了有關CSS相當多的警告。我應該擔心嗎?

回答

2

有沒有辦法讓只有 信息我在尋找: 109.123.00.00還是我只是 需要從它手動 剝去信息?

這應該工作:

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

其他方式來提取頁面信息,請參見JavaDoc中HtmlPage。不要手動解析頁面。注意:由於您已經在使用Groovy,因此您還可以看看Geb,這是一種流行的基於Groovy的Web自動化和測試工具,比HtmlUnit更便於使用。

+0

lol我有一個未聲明的變量,它拋棄了我的代碼。 (我回去多次編輯它,並沒有意識到我刪除了它,我已經編輯了這個問題作爲它的最後一部分,如果你有機會對此發表評論,我將不勝感激。提到`Geb`我會檢查它,儘管我剛開始習慣了HtmlUnit。 – StartingGroovy 2011-02-03 21:18:01