Програмное заполнение полей используя Webbrowser

  • Автор темы zazaza
  • Дата начала
Статус
Закрыто для дальнейших ответов.
Z

zazaza

Гость
#1
Поставить на форму WEBBROWSER
Програмно зайти через форму на сайте через WEBBROWSER
Запонить програмно одно поле

Одно я знаю как поле заполнить у которого ХТМЛ код выглядит так:


Код:
<td width="150" style="padding:2px;">Название:</td>
<td style="padding:2px;"><input type="text" name="name" size="25" class="edit bk"><a href="#" class="hintanchor" onMouseover="showhint('Название статической страницы. Допустимо использование только латинских символов без пробелов', this, event, '250px')">[?]</a></td>
Вот тако его можно заполнить :

Код:
WebBrowser1.Document.GetElementById("name").InnerText = "Тестируем"

А если у другого поля которое мне надо ХТМЛ код такой то как его заполнить?
Код:
<td style="padding:2px;">Текст:</td>
<td style="padding-left:2px;"><script type=text/javascript>
 

hosm

* so what *
18.05.2009
2 442
9
42
Kiev, Ukraine
#2
А таких <script> элементов много на форме или в таблице?
Можно получить все script, но не факт, что легко сможете выделить нужный и позволительно задать или поменять ему значение.

Код:
For Each script As HtmlElement In WebBrowser1.Document.GetElementsByTagName("script")
If script.InnerHtml.Contains("это тот скрипт, который надо поменять") Then ' шутка
script.SetAttribute("text", scriptTextReplace) ' пробуем изменять
End If
Next
Добавлено: id там никакого рядом нет (у td, tr), чтоб однозначно определить нужный элемент?
Ибо проверять type=text/javascript мб недостаточно, всё зависит от содержимого.
 
Z

zazaza

Гость
#3
А таких <script> элементов много на форме или в таблице?
Можно получить все script, но не факт, что легко сможете выделить нужный и позволительно задать или поменять ему значение.

Код:
For Each script As HtmlElement In WebBrowser1.Document.GetElementsByTagName("script")
If script.InnerHtml.Contains("это тот скрипт, который надо поменять") Then ' шутка
script.SetAttribute("text", scriptTextReplace) ' пробуем изменять
End If
Next
Добавлено: id там никакого рядом нет (у td, tr), чтоб однозначно определить нужный элемент?
Ибо проверять type=text/javascript мб недостаточно, всё зависит от содержимого.

Что то я запутался. и что такое SCRIPTTEXTREPLACE ? переменная ? или что то другое ? в Visual Basic. NEt у меня не поддерживается такое (

Может я не правильно тебя понял или ты меня? Ладно фиг с ним попробую на всякий случай объяснить ещё раз более подробно
Вот картинка с полями которые мне нужно заполнить:



Поле №1 я знаю как можно заполнить.
Поле №2 я тоже знаю как можно заполнить.
А вот поле №3 я понятия не имею как заполнить. Как вообще к нему програмно обратиться что бы при щелчке например по BUTTON1 в поле вписался текст например такого типа "Тест успешно завершён"

Когда я открываю исходный код страницы то там вот такие дебри не то что в первом и во втором варианте:

Код:
<script type="text/javascript">
Calendar.setup({
inputField	 :	"f_date_c",	 // id of the input field
ifFormat	  :	"%Y-%m-%d %H:%M",	 // format of the input field
button		 :	"f_trigger_c", // trigger for the calendar (button ID)
align		 :	"Br",		  // alignment 
timeFormat	 :	"24",
showsTime	 :	true,
singleClick	:	true
});
</script></td>
</tr>
<tr>

<td style="padding:2px;">Текст:</td>
<td style="padding-left:2px;"><script type=text/javascript>
<!--

var uagent	= navigator.userAgent.toLowerCase();
var is_safari = ( (uagent.indexOf('safari') != -1) || (navigator.vendor == "Apple Computer, Inc.") );
var is_ie	 = ( (uagent.indexOf('msie') != -1) && (!is_opera) && (!is_safari) && (!is_webtv) );
var is_ie4	= ( (is_ie) && (uagent.indexOf("msie 4.") != -1) );
var is_moz	= (navigator.product == 'Gecko');
var is_ns	 = ( (uagent.indexOf('compatible') == -1) && (uagent.indexOf('mozilla') != -1) && (!is_opera) && (!is_webtv) && (!is_safari) );
var is_ns4	= ( (is_ns) && (parseInt(navigator.appVersion) == 4) );
var is_opera = (uagent.indexOf('opera') != -1);
var is_kon	= (uagent.indexOf('konqueror') != -1);
var is_webtv = (uagent.indexOf('webtv') != -1);

var is_win	= ( (uagent.indexOf("win") != -1) || (uagent.indexOf("16bit") !=- 1) );
var is_mac	= ( (uagent.indexOf("mac") != -1) || (navigator.vendor == "Apple Computer, Inc.") );
var ua_vers  = parseInt(navigator.appVersion);

var text_enter_url	  = "Введите полный URL ссылки";
var text_enter_size	  = "Введите размеры флэш ролика (ширина, высота)";
var text_enter_flash	  = "Введите ссылку на флэш ролик";
var text_enter_page	 = "Введите номер страницы";
var text_enter_url_name = "Введите название сайта";
var text_enter_page_name = "Введите описание ссылки";
var text_enter_image	= "Введите полный URL изображения";
var text_enter_email	= "Введите e-mail адрес";
var text_enter_list	 = "Введите пункт списка. Для завершения ввода оставьте поле пустым.";
var text_code		  = "Использование: [CODE] Здесь Ваш код..
";
var text_quote = "Использование:
Здесь Ваша Цитата..
";
var error_no_url = "Вы должны ввести URL";
var error_no_title = "Вы должны ввести название";
var error_no_email = "Вы должны ввести e-mail адрес";
var prompt_start = "Введите текст для форматирования";
var img_title = "Введите по какому краю выравнивать картинку (left, center, right)";
var email_title = "Введите описание ссылки";
var dle_prompt = "Ввод информации";
var bb_t_emo = "Вставка смайликов";
var bb_t_col = "Цвет:";

var b_open = 0;
var i_open = 0;
var u_open = 0;
var s_open = 0;
var quote_open = 0;
var code_open = 0;
var sql_open = 0;
var html_open = 0;
var left_open = 0;
var center_open = 0;
var right_open = 0;
var hide_open = 0;
var color_open = 0;
var spoiler_open = 0;
var ie_range_cache = '';
var list_open_ = '';
var list_close_= '';
var listitems = '';
 

hosm

* so what *
18.05.2009
2 442
9
42
Kiev, Ukraine
#4
Что то я запутался. и что такое SCRIPTTEXTREPLACE ? переменная ? или что то другое ? в Visual Basic. NEt у меня не поддерживается такое
да, переменная. Там изначально непонятно было, что заполнять. Я подумала, что просто вписать какой-то js-код в элемент script, там может быть текст - кусок кода. Для заполнения его и используется SetAttribute("text", СтрокиКода))
Судя по картинке, там на страничке есть либо textarea (там может быть использовано value для задания значения, элемент textarea можно попробовать получить по тегу -аналогично тому, как писала для "script" - или через id, тогда посмотреть наличие id/name), либо какой-то другой элемент встроен для редактирования форматированного текста.
Но ничего подобного в приведенном куске пока тут не вижу, поэтому я не подскажу.
 
Z

zazaza

Гость
#5
да, переменная. Там изначально непонятно было, что заполнять. Я подумала, что просто вписать какой-то js-код в элемент script, там может быть текст - кусок кода. Для заполнения его и используется SetAttribute("text", СтрокиКода))
Судя по картинке, там на страничке есть либо textarea (там может быть использовано value для задания значения, элемент textarea можно попробовать получить по тегу -аналогично тому, как писала для "script" - или через id, тогда посмотреть наличие id/name), либо какой-то другой элемент встроен для редактирования форматированного текста.
Но ничего подобного в приведенном куске пока тут не вижу, поэтому я не подскажу.
сейчас я добавлю обсалютно полной исходный код этой страницы с формой. Может там чтоо увидете бегло.
Я просто уже 2рой день бьюсь как рыба об лёд молюсь что бы кто нибудь вконце концов помог добисать одну строку. НАверняка там не больше получится.

Программа закончена фактически на 95% а оставшиеся 5 % это как раз заполнить это проблемное поле (


Извиняюсь. Никак не могу добавить полный код через теги CODE/ CODE Данный форум ругается с такой вот ошибкой.
-----------------
Ошибка использования BB кодов форума. Возможно вы неправильно использовали какой-то из тегов, как, например, тег [TAG], тогда как он должен использоваться в виде [TAG=] или наоборот.
--------

ВИдимо в тексте он находит элементы которые как ему кажется должны быть записаны по другому..
Поэтому я весь код записать в текстовой документ который можно открыть любым блокнотом хотябы тем что идёт в комплекте с операционной системой
Поправка: попробовать прикрепить текстовой фаил форум ругается с ошибкой:
Неудачная загрузка. Необходимо проверить настройки и права доступа. Пожалуйста, сообщите об этом администрации.
Поэтому просто уже заливаю куда нибудь на DEPOSTFILES хотябы


Ссылка на скачивание: http://depositfiles.com/files/uw10xg92h
Размер файла: 39кб
Формат файла: *.txt

Пожалста помогите (
 

hosm

* so what *
18.05.2009
2 442
9
42
Kiev, Ukraine
#7
посмотри на странице
WebBrowser1.Document.GetElementById("template")
если получишь правильно, то попробуй ему сделать
.SetAttribute("value", "нужный текст")
или .SetAttribute("Value", "нужный текст")
т.е. нечто типа
WebBrowser1.Document.GetElementById("template").SetAttribute("value", "нужный текст")

PS:
или вот еще вариант поиска по тегу с проверкой имени:
Код:
		theElementCollection = WebBrowser1.Document.GetElementsByTagName("textarea")
For Each curElement As HtmlElement In theElementCollection
Dim controlName As String = curElement.GetAttribute("name").ToString
If controlName = "template" Then
curElement.SetAttribute("Value", "нужный текст")
End If
Next
 
Z

zazaza

Гость
#8
Всё спасибо/ спасиьбо огромное:

Код:
WebBrowser1.Document.GetElementById("template").SetAttribute("value", "нужный текст")
Сработало.


Добавлено: Всё спасибо/ спасиьбо огромное:

Код:
WebBrowser1.Document.GetElementById("template").SetAttribute("value", "нужный текст")
Сработало.
 
Статус
Закрыто для дальнейших ответов.