Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Windows Forms
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.07.2015, 10:49   #1
crn
 
Регистрация: 11.07.2015
Сообщений: 4
По умолчанию Комбобокс в webbrouser

Здравствуйте!
Есть страница в инете, поля и комбобоксы которой нужно заполнить автоматически.
Комбобокс заполняю так:
webBrowser1.Document.GetElementById ("fld_category_id").SetAttribute("v alue", "111");
Это норм работает.
Но дело в том, что, когда заполняешь поля ручками, появляется второй комбобокс (это типа подкатегории основного), но вот при программном заполнении оно появляться не желает, мало того, его нет и в html коде, соответственно непонятно как получить его id.
Какими способами можно его заполнить?
crn вне форума Ответить с цитированием
Старый 11.07.2015, 11:42   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Для выбора элемента в комбобоксе есть selectedIndex. Или как-то так если по тексту, а не индексу надо http://stackoverflow.com/a/3989404/964478

Вообще для автоматизации обычно проще Selenium взять, чем с обычными браузерами самому париться. Например, для комбобокса там есть готовый класс с методами типа SelectByText.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 11.07.2015, 13:16   #3
crn
 
Регистрация: 11.07.2015
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Для выбора элемента в комбобоксе есть selectedIndex. Или как-то так если по тексту, а не индексу надо http://stackoverflow.com/a/3989404/964478

Вообще для автоматизации обычно проще Selenium взять, чем с обычными браузерами самому париться. Например, для комбобокса там есть готовый класс с методами типа SelectByText.
да выбрать его не проблема, проблема в том, что там ява скрипт, и данные еще не загружены, нечего выбирать.

Это выбор вручную.

К примеру если вручную выбрать Категорию 1 - "Товары для детей и игрушки", то на странице появляется список --Вид товара--
Автомобильные кресла, Велосипеды и т.д.
Так вот 1ю категорию программно выбрать можно, она есть в html коде сайта, но после ее программного выбора 2я категория не появляется.
Вот программный выбор в webbrouser, 2го списка нет.

Последний раз редактировалось Stilet; 12.07.2015 в 13:40.
crn вне форума Ответить с цитированием
Старый 11.07.2015, 14:17   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Вы о чем? Если при выборе вручную происходит нужное вам событие, а так нет, значит неправильно выполняете это действие. Говорю ж, selectedIndex менять надо, а не value.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 11.07.2015, 17:43   #5
crn
 
Регистрация: 11.07.2015
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Вы о чем? Если при выборе вручную происходит нужное вам событие, а так нет, значит неправильно выполняете это действие. Говорю ж, selectedIndex менять надо, а не value.
Да не работает просто selectIndex, результат такой же, в базовом комбобоксе выбирает, подчиненного как не было так нет.
Нашел код в сети.
Код:
var select = webBrowser1.Document.GetElementById("fld_category_id");
  mshtml.HTMLSelectElement cbProyectos = select.DomElement as mshtml.HTMLSelectElement;

            var total = cbProyectos.length;
            for (int i = 0; i < total; i++)
            {
                cbProyectos.selectedIndex = i;
                if (cbProyectos.value.Contains("30"))
                {
                    break;
                }
            }
            select.InvokeMember("onchange");
       
     select.Children[4].SetAttribute("selected", "selected");
            var theElementCollection = webBrowser1.Document.GetElementsByTagName("select");
            foreach (HtmlElement el in theElementCollection)
            {
                if (el.GetAttribute("value").Equals("2"))
                {
                    el.SetAttribute("selected", "selected");
                    el.InvokeMember("click");
                }
            }
Там понятно до строчки select.Children[4].SetAttribute("selected", "selected");
Почему там два раза "selected"?

Последний раз редактировалось Stilet; 12.07.2015 в 13:40.
crn вне форума Ответить с цитированием
Старый 11.07.2015, 18:28   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А чего в ней непонятного? Видимо устанавливает значение атрибута selected в "selected"
Код:
selected="selected"
Вряд ли обязательно именно так, наверно достаточно просто, чтоб он был с любым значением.


Попробуйте просто InvokeMember("onchange") добавить аналогично.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 12.07.2015, 13:10   #7
crn
 
Регистрация: 11.07.2015
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А чего в ней непонятного? Видимо устанавливает значение атрибута selected в "selected"
Код:
selected="selected"
Вряд ли обязательно именно так, наверно достаточно просто, чтоб он был с любым значением.


Попробуйте просто InvokeMember("onchange") добавить аналогично.
Я написал вам в скайп, не могли бы ответить если не сложно?
crn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нажатие кнопки в WebBrouser Monarh01 Работа с сетью в Delphi 10 28.12.2014 00:01
Выделенный текст в WebBrouser! Leximus Общие вопросы Delphi 1 07.06.2012 11:13
WebBrouser avr Компоненты Delphi 5 23.07.2010 21:27
из WebBrouser в Memo AM_ Компоненты Delphi 1 31.10.2008 16:35
scroll в webbrouser MaslCS Компоненты Delphi 4 23.01.2008 22:58