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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2015, 13:50   #1
zdus2757
vk.com/replog
Пользователь
 
Регистрация: 04.05.2012
Сообщений: 87
Радость WebBrowser тыкнуть в "картинку"

Всем привет, пишу небольшого "бота" не на продажу или еще что, для себя

вот, сначала у меня была проблема что WebBrowser открывал сайт с "IE", таким образом я изменил User Agent, дальше сайт всеравно продолжал биться с WebBrowser'om и была проблема с Java я так понимаю, нашел в гугле способ, добавить в реестр в
"HKEY_CURRENT_USER ........... \ FEATURE_BROWSER_EMULATION"
строчку с названием своей программы, после всего этого сайт наконец стал нормально работать в программе

авторизацию на сайте я не стал делать, да и капча там, поэтому WEbBrowser в открытом виде на форме, там авторизируюсь, перехожу в нужный раздел, читаю "данные" точнее id некоторых элементов парсингом
и в конце концов все вроде нормально, у меня есть id по которому нужно тыкать и открыта нужная страница, но когда я тыкаю по кнопке на форме с кодом:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var Str:String;
i,F:integer;
ovElements:OleVariant;
begin

 for f:=0 to WebBrowser1.OleObject.Document.forms.Length-1 do
 BEGIN
ovElements := WebBrowser1.OleObject.Document.forms.Item(F).elements;
for I := 0 to ovElements.Length - 1 do
begin
if ovElements.item(i).id = 'Name1' then begin ovElements.item(i).Click; end;
end;
while WebBrowser1.ReadyState<>4 do Application.ProcessMessages;
 END;

Log.Lines.Add('Время: ' + TimeToStr(Now) + ' кликнул :)');
end;
это код просто для "теста" и вот, когда я кликаю по кнопке в конце концов он в "log" т.е. в memo добавляет строчку что он кликнул, туда куда надо, но на самом деле он не кликнул, в WebBrowser'е ничего не изменилось

вот такая вот проблема, кто может подсказать почему не кликает? или можно ли как-то кликнуть в java, или я что-то упустил?

PS. если открыть код страницы в WebBrowser'e то там нет того места куда должен кликнуть Но если парсить с WebBrowser'а эти ID то они есть в коде который вытаскивает со страницы "программно"
zdus2757 вне форума Ответить с цитированием
Старый 18.12.2015, 14:01   #2
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Ваш лог показывает что вы кликнули на батон, никакого отношения к кликанью в браузере он не имеет.
А чтобы говорить почему не кликает в браузере надо больше информации.
come-on вне форума Ответить с цитированием
Старый 18.12.2015, 14:04   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
или можно ли как-то кликнуть в java, или я что-то упустил?
Если у вас там не Java апплеты, то не путайте Java с JavaScript.

И да, можно.
Например вызвав метод click (только для кнопок) или так
Код:
	    var obj = ...;
	    var evObj = document.createEvent('MouseEvents');
	    evObj.initEvent( 'click', true, false );
	    obj.dispatchEvent(evObj);
где obj — любой способ получения элемента например
Код:
document.getElementById('id')
Код:
document.getElementsByClassName('name')[0]
или XPath
Код:
document.evaluate(\"//a[contains(@href, 'something')]\", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue
А вообще для автоматизации советую взять Selenium (ну и вместо Дельфи язык для которого он есть: C#, Java, Python, ...). ВебБраузер предназначен для отображения, а не автоматизации.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 18.12.2015 в 14:06.
Alex11223 вне форума Ответить с цитированием
Старый 19.12.2015, 06:28   #4
zdus2757
vk.com/replog
Пользователь
 
Регистрация: 04.05.2012
Сообщений: 87
По умолчанию

спс за ответы, похоже дело не в java/javascript а в том что я просто не туда кликаю
сам id на который я кликаю, начинается немного не с того места куда именно надо кликнуть, таким образом я начал кликать через div , class="click_div", все конечно стало работать, но всеравно появилась проблема, с ней думаю сам справлюсь
zdus2757 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Постоянно слетает галочка "автоматически" в "Параметры Excel", "Формулы", "Вычисления в книге" Alexsandrr Microsoft Office Excel 4 19.10.2013 14:22
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") funnyy Помощь студентам 3 17.10.2012 17:40
Вывести название соответствующей карты вида "шестерка бубен", "дама червей","туз треф" и т.п. воваава Помощь студентам 3 01.12.2011 12:50
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04