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

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

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2014, 17:51   #1
Monarh01
 
Регистрация: 16.01.2014
Сообщений: 6
Восклицание Нажатие кнопки в WebBrouser

Добрый день. Необходима помощь, столкнулся с тем, что не могу написать код на нажатие кнопки в webBrouser на кнопку, вернее код есть но кнопка не нажимается, вся сложность в том, что кнопка находится во всплывающем окне.

Код кнопки (с помощью инспектора в мазиле):
<div state="up" tabindex="0" dataquery="#undefined" class="wysiwyg_viewer_skins_button_ ShinyButtonIISkinecom_ap1 focusable " skin="wysiwyg.viewer.skins.button.S hinyButtonIISkin" styleid="ecom_ap1" id="vwprxyi416pf5f" height="40" propertyquery="#wixApps3au" comp="wixapps.integration.component s.SiteButton" style="box-sizing: border-box; position: absolute; visibility: visible; min-height: 40px; width: 380px; height: 40px;" vcfield="addToCartTitle" vcview="ProductZoomAddToCartButton" vctype="ProductBundle"><div style="overflow: hidden; text-align: center;" class="wysiwyg_viewer_skins_button_ ShinyButtonIISkinecom_ap1-link" skinpart="link"><span style="line-height: 40px;" class="wysiwyg_viewer_skins_button_ ShinyButtonIISkinecom_ap1-label font_7" skinpart="label">Добавить в корзину</span></div></div>

Сама ссылка:
http://www.kosher.in.ua/#!product/pr...B2%D0%B5%D1%81

Ну и сам код в дельфе:
Код:
...
var HtmlDocument, HtmlCollection: Variant;
i: integer;
...
HtmlDocument := WebBrowser1.Document as IHtmlDocument2;
HtmlCollection := HtmlDocument.All;
for i:=0 to (HtmlCollection.Length - 1) do
begin
if((HtmlCollection.item(i).tagName= 'Div') and
(HtmlCollection.item(i).className='wysiwyg_viewer_skins_button_ShinyButtonIISkinecom_ap1-link'))
then HtmlCollection.item(i).Click;
end;
Но кнопку не нажимает. Кто может и знает помогите, заранее спасибо.

Последний раз редактировалось Stilet; 26.12.2014 в 08:24.
Monarh01 вне форума Ответить с цитированием
Старый 26.12.2014, 04:26   #2
милт
Форумчанин
 
Регистрация: 19.03.2012
Сообщений: 108
По умолчанию

Какую именно кнопку там надо нажать? объясни словами или выдели на скриншоте
милт вне форума Ответить с цитированием
Старый 26.12.2014, 08:26   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
if((HtmlCollection.item(i).tagName= 'Div')
Не пойму я почему ты решил что это кнопка...
И кстати почему ты с большой буквы написал. Так у тебя больная вероятность появилась, что условие это не выполнится никогда, потому что просто имена тега не совпадут.
Поставь бряк на HtmlCollection.item(i).Click; и посмотри дойдет ли программа до него.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.12.2014, 17:42   #4
Monarh01
 
Регистрация: 16.01.2014
Сообщений: 6
По умолчанию

к сожалению ничего не помогло(break не помог после нажатия кнопки ничего не происходит, даже тег с маленькой буквы тоже не дал реакции), может есть еще предложение?
Ну я не уверен что именно этот код должен нажать кнопку (с имитировать нажатие). Я выложил код который показал мне инспектор в лисе.
P.S. Милт - в 1-ом посте есть ссылка на страницу где находится кнопка.

Последний раз редактировалось Monarh01; 27.12.2014 в 17:58.
Monarh01 вне форума Ответить с цитированием
Старый 27.12.2014, 18:14   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
break не помог
Программа тормознулась на вызове клика?
Или ты меня не так понял?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.12.2014, 18:31   #6
Monarh01
 
Регистрация: 16.01.2014
Сообщений: 6
По умолчанию

Код:
var
 HtmlDocument   : IHtmlDocument2;
 HtmlCollection : IHtmlElementCollection;
 HtmlElement    : IHtmlElement;
 I             : Integer;
begin
 HtmlDocument := WebBrowser1.Document as IHtmlDocument2;
 HtmlCollection := HtmlDocument.All;
 for I := 0 to HtmlCollection.Length - 1 do
 begin
   HtmlElement := HtmlCollection.Item(i, 0) as IHtmlElement;
   if HtmlElement.tagName='div' then
   begin
     if pos('Добавить в корзину', WebBrowser1.oleobject.document.body.innerhtml)>0 then
     begin
       HtmlElement.click;
          break;
    end;
   end;
 end;
end;
делал так и Break ставил до и после (эффекта 0, иногда выскакивала ошибка invalid variant operation) вроде так понял, если нет то подскажите куда его вставить Break.
И в этом коде тоже:
Код:
...
var HtmlDocument, HtmlCollection: Variant;
i: integer;
...
HtmlDocument := WebBrowser1.Document as IHtmlDocument2;
HtmlCollection := HtmlDocument.All;
for i:=0 to (HtmlCollection.Length - 1) do
begin
if((HtmlCollection.item(i).tagName= 'div') and
(HtmlCollection.item(i).className='wysiwyg_viewer_skins_button_ShinyButtonIISkinecom_ap1-link'))
then HtmlCollection.item(i).Click;
break;
end;

Последний раз редактировалось Stilet; 27.12.2014 в 18:46.
Monarh01 вне форума Ответить с цитированием
Старый 27.12.2014, 18:50   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Хе ))
Ты меня не понял.
Что такое точки прерывания в отладчике ты видимо не знаешь.
Поясняю: По стандарту Делфи чтоб программа в режиме отладки остановилась в нужном месте нужно стать курсором редактора на нужную строку и нажать F5. Слева появится красная точка-маркер бряка. Бряк это и есть точка прерывания.
После чего запускай отладчик, проделавай в программе нужны действия и смотри не упадет ли программа на этой точке остановив свое выполнение.
Если остановится - IF выполняется. Иначе не выполняется.
Оператор break тут ни при чем.
Ну или если не понимаешь как с отладкой работать просто напиши:
Код:
if((HtmlCollection.item(i).tagName= 'div') and
(HtmlCollection.item(i).className='wysiwyg_viewer_skins_button_ShinyButtonIISkinecom_ap1-link'))
then begin
 HtmlCollection.item(i).Click;
 ShowMessage('HtmlCollection.item(i).Click выполнился');
end;
И посмотри вылезет ли сообщение
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.12.2014, 19:17   #8
Monarh01
 
Регистрация: 16.01.2014
Сообщений: 6
По умолчанию

Вообщем сделал все как вы говорите поставил бряк (F5) на строку - HtmlCollection.item(i).Click; - запустил Run to cursor и сделал действие в программе - посмотрел на строку где стоит бряк, там красная точка с зеленой галочкой, сделал без бряка с ShowMessage('HtmlCollection.item(i) .Click выполнился'); -при нажатии кнопки, табличка не выскочила.
Код:
 then begin
 HtmlCollection.item(i).Click;
 ShowMessage('HtmlCollection.item(i).Click выполнился');
end;
А если поставить ShowMessage('HtmlCollection.item(i) .Click выполнился'); в код ниже, тогда табличка вылетает, но кнопка естественно не нажимается.
Код:
for i:=0 to (HtmlCollection.Length - 1) do
begin
if((HtmlCollection.item(i).tagName= 'div') and
(HtmlCollection.item(i).className='wysiwyg_viewer_skins_button_ShinyButtonIISkinecom_ap1-link'))
then
begin
HtmlCollection.item(i).Click;
end;
end;
ShowMessage('HtmlCollection.item(i).Click выполнился');
end;

Последний раз редактировалось Monarh01; 27.12.2014 в 19:32.
Monarh01 вне форума Ответить с цитированием
Старый 27.12.2014, 20:10   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Так,все ясно. Пока ты не научишься использовать отладчик дальше можешь не пытаться что-то делать. Не получится. Без обид.
Свое мнение я выше сказал: Твой if не выполняется.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.12.2014, 20:19   #10
Monarh01
 
Регистрация: 16.01.2014
Сообщений: 6
По умолчанию

ок спасибо и на этом.
Monarh01 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нажатие кнопки megostudent Общие вопросы Delphi 9 26.09.2011 11:11
While (нажатие кнопки) azhell Общие вопросы Delphi 1 09.08.2011 23:23
нажатие кнопки beygul Помощь студентам 2 30.01.2010 21:34
На нажатие кнопки access6472043 Microsoft Office Access 2 29.11.2009 15:08
нажатие кнопки xakkkkker Работа с сетью в Delphi 1 20.11.2008 01:08