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

Тема в разделе "Visual Basic", создана пользователем zazaza, 13 май 2011.

Статус темы:
Закрыта.
  1. zazaza

    zazaza Гость

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

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


    Код (Text):
    <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>
    Вот тако его можно заполнить :

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

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

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    А таких <script> элементов много на форме или в таблице?
    Можно получить все script, но не факт, что легко сможете выделить нужный и позволительно задать или поменять ему значение.

    Код (Text):
    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 мб недостаточно, всё зависит от содержимого.
     
  3. zazaza

    zazaza Гость


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

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

    [​IMG]

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

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

    Код (LotusScript):
    <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 = '';
     
  4. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    да, переменная. Там изначально непонятно было, что заполнять. Я подумала, что просто вписать какой-то js-код в элемент script, там может быть текст - кусок кода. Для заполнения его и используется SetAttribute("text", СтрокиКода))
    Судя по картинке, там на страничке есть либо textarea (там может быть использовано value для задания значения, элемент textarea можно попробовать получить по тегу -аналогично тому, как писала для "script" - или через id, тогда посмотреть наличие id/name), либо какой-то другой элемент встроен для редактирования форматированного текста.
    Но ничего подобного в приведенном куске пока тут не вижу, поэтому я не подскажу.
     
  5. zazaza

    zazaza Гость

    сейчас я добавлю обсалютно полной исходный код этой страницы с формой. Может там чтоо увидете бегло.
    Я просто уже 2рой день бьюсь как рыба об лёд молюсь что бы кто нибудь вконце концов помог добисать одну строку. НАверняка там не больше получится.

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


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

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


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

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

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    можно было файл приаттачить сюда через расширенную форму ответа)
     
  7. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    посмотри на странице
    WebBrowser1.Document.GetElementById("template")
    если получишь правильно, то попробуй ему сделать
    .SetAttribute("value", "нужный текст")
    или .SetAttribute("Value", "нужный текст")
    т.е. нечто типа
    WebBrowser1.Document.GetElementById("template").SetAttribute("value", "нужный текст")

    PS:
    или вот еще вариант поиска по тегу с проверкой имени:
    Код (Text):
            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
     
  8. zazaza

    zazaza Гость

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

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


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

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

Поделиться этой страницей