HtmlUnit - выбор форм, флажков, текстовых полей и кнопок отправки - PullRequest
2 голосов
/ 29 января 2011

Я немного возился с 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 Ответ

2 голосов
/ 03 февраля 2011

Есть ли способ получить только информация, которую я ищу: 109.123.00.00 или я просто нужно снять с него информацию вручную?

Это должно работать:

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

См. JavaDoc для HtmlPage , чтобы узнать о других способах извлечения информации со страницы. Не анализируйте страницу вручную.

Примечание: поскольку вы уже используете Groovy, вы также можете взглянуть на Geb , популярный инструмент веб-автоматизации и тестирования на основе Groovy, который удобнее в использовании, чем HtmlUnit.

...