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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2009, 21:37   #1
AquaKlaster
Delphi,Python,PHP
Форумчанин
 
Аватар для AquaKlaster
 
Регистрация: 04.04.2009
Сообщений: 138
По умолчанию Как в Twebbrowser кликнуть по ссылке?

Как в Twebbrowser кликнуть по ссылке, именно кликнуть! Вот ссылка страницы http://kinotraff.ru/in.php?id=62421&base=1 на ней имеется кнопка "ВХОД" при нажатии на эту кнопку запускается JAVA-скрипт http://www.mytraf.ru/js/kinotraff_ru.js ! Как кликнуть по ссылке "ВХОД" что бы активировался скрипт? Зарание спасибо!
AquaKlaster вне форума Ответить с цитированием
Старый 02.05.2009, 00:48   #2
alex1245
 
Регистрация: 17.03.2009
Сообщений: 6
По умолчанию

Квэнди молодец. мою тему вообще потер за правду...
хоть бы раз подсказал что!!! ну не знаешь - так не нужно "служебное положение" использовать...

а тебе - совет: этот форум - так себе, ищи другие, сам видишь что отвечали в предыдущей теме: вообще не смыслят люди...

а по теме, хотя бы так:
link:=WebBrowser1.OleObject.Documen t.getelementsbytagname('a');
for i:=0 to link.length-1 do begin
if link.item(i).id='ttp://kinotraff.ru/in.php?id=62421&base=1' then
link.item(i).click;
end;

и вообще - стыдно такие вещи спрашивать - поиск в гугле на первой странице решение выдает!
alex1245 вне форума Ответить с цитированием
Старый 02.05.2009, 02:03   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

хм....и какую же тему?
или мы упорно утверждаем что мы самые крутые просто нас не признают?

так вот о теме
1)alex1245, давал бы полный код.
вот полный код:
Код:
uses MSHTML;

-------------------------------

procedure TForm1.FormClick(Sender: TObject);
var link:variant;
    i:integer;
begin
 link:=WebBrowser1.OleObject.Document.getelementsbytagname('a');
 for i:=0 to link.length-1 do
 if pos('http://kinotraff.ru/go.php?id=',link.item(i).href)<>0 then link.item(i).click;
end;
2)топикстартер а вы в курсе что при нажитии там никакого скрипта не идет?
там просто новое окно открывается, обрабатывайте событие OnNewWindow2/3
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 02.05.2009 в 09:59.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.05.2009, 09:31   #4
postal2
Форумчанин
 
Аватар для postal2
 
Регистрация: 31.10.2008
Сообщений: 215
По умолчанию Как вести себя на html странице

Не знаю, почему многоуважаемые модераторы стёрли эту тему, но с полгода назад всем форумом разбирались, как это делается. Благо у меня остались все исходники, поэтому сейчас буду делиться теми (и не только ) наработками, итак
1. Сразу, чтобы потом не спрашивали - получение кода из webbrowser:
Код:
function WB_GetHTMLCode(WebBrowser: TEmbeddedWb; ACode: TStrings): Boolean;
var
  ps: IPersistStreamInit;
  ss: TStringStream;
  sa: IStream;
begin
  ps := WebBrowser.Document as IPersistStreamInit;
  ss := TStringStream.Create('');
  try
    sa := TStreamAdapter.Create(ss, soReference) as IStream;
    Result := Succeeded(ps.Save(sa, True));
    if Result then ACode.Text := ss.Datastring;
  finally
    ss.Free;
  end;
end;
2. Поиск компонента и установка его значения (может быть как Textarea, так и select вроде). what: название компонента (в коде, ищите), тоwhat - значение, которое ему надо установить:
Код:
procedure findandset(what,towhat:string);
var
form:olevariant;
f,i:integer;
begin
for f:=0 to form1.WebBrowser1.OleObject.Document.forms.Length-1 do
begin
form:=form1.WebBrowser1.OleObject.Document.forms.Item(f).elements;
for i:=0 to form.Length-1 do
if form.item(i).name=what then//можно также искать и по alt, type и другим, смотрите код страницы!
form.item(i).value:=towhat;
end;
end;
3. Как кликать по кнопке:
Код:
procedure findandclick(what:string);
var
form:olevariant;
f,i:integer;
begin
for f:=0 to form1.WebBrowser1.OleObject.Document.forms.Length-1 do
begin
form:=form1.WebBrowser1.OleObject.Document.forms.Item(f).elements;
for i:=0 to form.Length-1 do
if form.item(i).name=what then
begin form.item(i).click; break; end;
end;
end;
4. Если не получается стянуть значение у компонента страницы html стандартными способами, используйте нестандартные, например, получайте весь код элемента
Код:
form.item(i).innerhtml
Ну вот и все основные приёмы на html странице. Для большего удобства при работе с ней рекомендую пользоваться Embedded wb, функций больше.
[Ferox]
postal2 вне форума Ответить с цитированием
Старый 22.10.2010, 23:27   #5
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию

меня попросили написать прогу которая приглашает в группу в контакте.
Начал писать и пришел в тупик:
Код:
procedure TForm1.SpeedButton2Click(Sender: TObject);
var di,link,link2:variant;
    i,j,kol:integer;
begin
 link:=WebBrowser1.OleObject.Document.getelementsbytagname('a');
for i:=0 to link.length-1 do begin
  if pos('Пригласить в группу',link.item(i).innerText)>0 then
  begin
  link.item(i).click;
  break;
  end;
end;

for i:=0 to link.length-1 do begin
  if pos('Перейти к поиску',link.item(i).innerText)>0 then
  begin
  link.item(i).click;
  break;
  end;
end;

link:=WebBrowser1.OleObject.Document.getelementsbytagname('a');
for i:=0 to link.length-1 do begin
memo1.Lines.add(link.item(i).innerText);
 if pos('Выслать приглашение,link.item(i).innerText)>0 then
  begin
  link.item(i).click;
  end;
end;
end;
не выполняется 3-й for
в memo выводится ссылки предыдущей страницы, почему не пойму.
Пробовал ставить sleep перед
link:=WebBrowser1.OleObject.Documen t.getelementsbytagname('a');

не помогает, сначала заполняется мемо текстами ссылок, только потом происходит переход на страницу на которой есть ссылка с текстом "Выслать приглашение". Пробовал вообще эту часть кода перенести в отдельную процедуру
Код:
link:=WebBrowser1.OleObject.Document.getelementsbytagname('a');
for i:=0 to link.length-1 do begin
memo1.Lines.add(link.item(i).innerText);
 if pos('Выслать приглашение,link.item(i).innerText)>0 then
  begin
  link.item(i).click;
  end;
end;
end;
не помогло, все тоже самое (
fate вне форума Ответить с цитированием
Старый 27.10.2010, 17:52   #6
Бриит
Пользователь
 
Регистрация: 27.10.2010
Сообщений: 12
По умолчанию

не могу сделать нажатие на кнопку

Код HTML:
<form class="shaurburgers-work" id="workForm" action="/shaurburgers/" method="post">
<input type="hidden" name="action" value="work">
<div class="time">
<select name="time"><option value="1">1 час</option>
<option value="2">2 часа</option>
<option value="3">3 часа</option>
<option value="4">4 часа</option>
<option value="5">5 часов</option>
<option value="6">6 часов</option>
<option value="7">7 часов</option>
<option value="8">8 часов</option></select>

<span class="button" onclick="$('#workForm').trigger('submit');">
<span class="f"><i class="rl"></i><i class="bl"></i><i class="brc"></i>
<div class="c">Работать</div></span></span>
</form>
по поводу выбора времени загвоздки не какой не было а вот как нажать на кнопу вот тут у меня стал вопрос


Код:
  
procedure TForm2.Button3Click(Sender: TObject);
Var
Form:oleVariant;
f,i:integer;
begin
WebBrowser1.Navigate('...');
for f:=0 to WebBrowser1.OleObject.Document.forms.Length-1 do begin
form:=WebBrowser1.OleObject.Document.forms.Item(f).elements;
for i:=0 to form.Length-1 do
if (form.item(i).name='time')  then begin
form.item(i).value:=8;// тут менять значение 
end;
end;
end;

кто чем может подскажите в какую сторону копать.
Бриит вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
КАК ПРОГРАМНО КЛИКНУТЬ ПО ССЫЛКЕ? AquaKlaster Работа с сетью в Delphi 3 01.05.2009 21:31
запуск приложения по ссылке из окна twebbrowser smirnoffnick Компоненты Delphi 3 16.04.2009 01:12
Как кликнуть по баннеру eldar Работа с сетью в Delphi 1 22.09.2008 09:16
Как програмно дважды кликнуть в RichEdit? apromix Общие вопросы Delphi 10 23.05.2008 17:09
как с делфи кликнуть мышю? Iceman Помощь студентам 1 23.02.2008 11:59