Страница 1 из 1

WebBrowser: тыкнуть на ссылку с известным текстом

Добавлено: 14 фев 2009, 21:17
Хыиуду
Картина следующая: в TWebBrowser загружена страница онлайн-игрушки (http://www.klanz.ru/rooms/1). На странице - список игроков. Страница генерируется автоматически, т.е. элементы списка в коде страницы отсуствуют, а есть код некоего скрипта, выводящего этот список. Имя каждого игрока является ссылкой, причем все ссылки указывают на один адрес (http://www.klanz.ru/rooms/1#). Известно имя игрока, которое гарантированно есть на этой странице. Возможно ли как-то программно тыкнуть на это имя?

Re: WebBrowser: тыкнуть на ссылку с известным текстом

Добавлено: 14 фев 2009, 21:24
Naeel Maqsudov
В принципе да. У TWebBrowser есть свойство которое ссылается на документ. Его значение - это объект, подчиняющийся DOM.
Получив ссылку на него можно делать все то же самое, что делают с документом и java-скрипты.

Re: WebBrowser: тыкнуть на ссылку с известным текстом

Добавлено: 14 фев 2009, 21:53
Duncon
Лет 5 назад вот такую штуку нацарапал, всё по DOM должно работать..
[syntax=Delphi]
procedure TForm1.BitBtn1Click(Sender: TObject);
var
i, j: byte;
FormItem: Variant;
begin
if WB.OleObject.Document.forms.Length = 0 then Exit;
for i := 0 to WB.OleObject.Document.forms.Length - 1 do
begin
FormItem := WB.OleObject.Document.forms.Item(I);
for j := 0 to FormItem.Length - 1 do
begin
if FormItem.Item(j).name = 'login' then FormItem.Item(j).Value := '';
if (FormItem.item(j).type = 'submit') then WB.OleObject.Document.forms.item(i).item(j).click;
end;
end;
end;
[/syntax]

Re: WebBrowser: тыкнуть на ссылку с известным текстом

Добавлено: 15 фев 2009, 01:08
Хыиуду
Там формы нет, просто ссылки. Но попробую завтра :)

Re: WebBrowser: тыкнуть на ссылку с известным текстом

Добавлено: 15 фев 2009, 11:32
Naeel Maqsudov
Это не важно. Просто вместо document.forms будет что-то другое. Все зависит от структуры документа. Содержимое любого тега доступно.

Re: WebBrowser: тыкнуть на ссылку с известным текстом

Добавлено: 16 фев 2009, 17:50
Хыиуду
В итоге дело решается так: из документа вытаскивается innertext, высчитывается, на какой строке находится нужное имя, вычисляются координаты строки и делается тык мышкой в том направлении :)

Re: WebBrowser: тыкнуть на ссылку с известным текстом

Добавлено: 16 фев 2009, 18:19
Duncon
Это один из вариантов есле по структуре достать сложно.. document.Layers итп

Re: WebBrowser: тыкнуть на ссылку с известным текстом

Добавлено: 18 фев 2009, 14:18
Хыиуду
А если есть div с известным id, в котором выводится список игроков - как его программно проскроллить?
Либо другой вопрос: если скроллить тупо с помощью посылания WM_KEYDOWN - всегда ли TWebBrowser скроллит на одну и ту же высоту?

Re: WebBrowser: тыкнуть на ссылку с известным текстом

Добавлено: 18 фев 2009, 14:31
Duncon
Лучше DOM почитай добраться можно к любому элементу, тем более IE вообще изврат можно полюбому развлекаться document.all. итд
В конце концов можно перебрать все элементы и сверится с id, не вижу причин скролить..

Re: WebBrowser: тыкнуть на ссылку с известным текстом

Добавлено: 18 фев 2009, 14:38
Naeel Maqsudov
Причина скролить, насколько я понял автора есть. Наверное надо чтобы открылась страница, да еще на нужном месте сразу.
Был бы там якорь, то можно было бы его прямо в URLе добавитьчерез решеточку... А так не знаю.... Надо как-то на этот DIV фокус перевести.
А c WM_* точно можно прогадать. Юзер возьмет и по умолчанию размер шрифта другой, или настроит подмену стилей, или просто у него размер системного шрифта будет другой в винде, и все... привет...