Selenium 2: определение типа содержимого ссылок - PullRequest
1 голос
/ 27 марта 2011

Я использую Java API Selenium 2 для взаимодействия с веб-страницами.Мой вопрос: как я могу определить тип содержимого адресатов ссылок?

По сути, это фон: перед тем, как щелкнуть ссылку, я хочу быть уверен, что ответ является HTML-файлом.Если нет, мне нужно разобраться с этим по-другому.Итак, допустим, есть ссылка для скачивания PDF-файла.Приложение должно непосредственно читать содержимое этого URL, а не открывать его в браузере.

Цель состоит в том, чтобы иметь приложение, которое автоматически знает, является ли текущее местоположение HTML, PDF, XML или любым другим, чтобы использовать соответствующеепарсеры для извлечения полезной информации из документов.

Обновление

Добавленная награда: вознаградит ее лучшим решением, которое позволит мне получить тип контента для данногоURL.

Ответы [ 3 ]

5 голосов
/ 03 апреля 2011

Как предполагает Йохен, способ получить тип контента без загрузки контента - это HTTP HEAD, а веб-драйверы selenium, похоже, не предлагают такой функциональности. Вам нужно будет найти другую библиотеку, которая поможет вам выбрать тип содержимого URL.

Java-библиотека, которая может сделать это: Apache HttpComponents , особенно HttpClient .

(следующий код не проверен)

HttpClient httpclient = new DefaultHttpClient();
HttpHead httphead = new HttpHead("http://foo/bar");
HttpResponse response = httpclient.execute(httphead);
BasicHeader contenttypeheader = response.getFirstHeader("Content-Type");

System.out.println(contenttypeheader);

Проект публикует JavaDoc для HttpClient , документация для интерфейса HttpClient содержит хороший пример.

0 голосов
/ 31 марта 2011

Вы можете извлечь все URL-адреса из DOM, а затем проанализировать последние несколько символов каждого URL-адреса (используя регулярное выражение java), чтобы определить тип ссылки.

Вы можете анализировать символы, начиная с последней точки.Например, в URL http://yoursite.com/whatever/test.pdf извлеките pdf и примените соответствующую логику теста.

Я упрощаю вашу проблему?

0 голосов
/ 27 марта 2011

Вы можете определить тип контента, который будет обрабатывать поступающие данные. Не уверен, почему вам нужно выяснить это в первую очередь. Если это так, используйте метод HEAD и посмотрите на заголовок Content-Type.

...