Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

Простой вопрос по TwebBrowser(я так думаю,что простой:)   Найти похожие ветки 

 
AV ©   (2012-09-19 23:53) [0]

В целях автоматизации некоторых своих операций в инете, накидал на форму
wb1: TWebBrowser; и пару кнопок
Суть - нажать все ChekBox на странице и нажать кнопку удалить(типа submit)
собсвенно, все работает, но иногда выскакивает
"На этой странице произошла ошибка сценария js..."
и кнопки продолжить или нет

Как или не допустить этого окна,
или кликнуть на любую кнопку
т.е. все равно как, но удалить все мессаги. Потому что пока окно висит, ничего не подгружается

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

procedure TForm1.btn1Click(Sender: TObject);
var
ovElements: OleVariant;
i: Integer;
begin
 ovElements := WB1.OleObject.Document.Forms.Item( 0 ).Elements;

 for i := 0 to ( ovElements.Length-1 ) do
    if ( AnsiUpperCase( ovElements.Item( i ).tagName ) = "INPUT" ) then
       if ( AnsiUpperCase( ovElements.Item( i ).type ) = "CHECKBOX" ) then
          //if ( ovElements.item( i ).Value = "Some text" ) then
             ovElements.Item( i ).Click;

end;

procedure TForm1.btn2Click(Sender: TObject);
var
ovElements: OleVariant;
i: Integer;
begin
 ovElements := WB1.OleObject.Document.Forms.Item( 0 ).Elements;
 for i := 0 to ( ovElements.Length-1 ) do
    if ( AnsiUpperCase( ovElements.Item( i ).type ) = "SUBMIT" ) then
       if ( AnsiUpperCase( ovElements.Item( i ).id ) = "DEL" ) then
          //if ( ovElements.item( i ).Value = "Some text" ) then
             ovElements.Item( i ).Click;
end;

procedure TForm1.btn4Click(Sender: TObject);
begin
 tmr1.Enabled := not(tmr1.Enabled);
end;

procedure TForm1.tmr1Timer(Sender: TObject);
begin
 btn1.Click;
 btn2.Click;
end;


 
знайка   (2012-09-20 11:43) [1]


> Как или не допустить этого окна
Искллючение обработать..


 
AV ©   (2012-09-20 11:55) [2]

Эврика никакого исключения не видит
т.е. как такового исключения нет
у wb1: TWebBrowser onInternalException или что-то похожего - не вижу.
Знаете - подскажите


 
Лакки   (2012-09-20 11:56) [3]

WebBrowser.Silent := true;


 
знайка   (2012-09-20 12:00) [4]


> Знаете - подскажите
try catch...


 
брат Птибурдукова   (2012-09-20 12:07) [5]

ну вот нафига это в потрепаловку кидать, а не в основную?


 
Динозавр Дороти   (2012-09-20 12:25) [6]

Удалено модератором


 
AV ©   (2012-09-20 12:31) [7]


> Лакки   (20.09.12 11:56) [3]
> WebBrowser.Silent := true;

Похоже, да.
Спасибо!


> ну вот нафига это в потрепаловку кидать, а не в основную?


Да это так, не вопрос жизни и смерти, просто хотелось бы лишних кликов не делать. За 1 час приходит ~ 200 уведомлений, нужных - штук 5. Все в теме письма написано. А сайт, кретинский, не более 10 на странице показывает за раз.
Ну, круто зато теперь, нажал кнопку, просматриваешь топ 10 пока не удалилось, удалилось - следующий топ 10 показывает.
Удобно. Не надо окошко это всплывающее закрывать время от времени.


 
знайка   (2012-09-20 13:01) [8]

Вам бы программиста нанять.. :)


 
AV ©   (2012-09-20 14:23) [9]

зачем?


 
stas ©   (2012-09-20 16:58) [10]

знайка   (20.09.12 13:01) [8]
>try catch...
такого в Delphi нет
а в случае описанном в теме и try...except не поможет

>Вам бы программиста нанять.. :)
Так что программист и Вам не помешал бы :)


 
знайка   (2012-09-20 23:05) [11]

Вы ваще топик читали, програмист...


 
AV ©   (2012-09-21 08:55) [12]


> знайка   (20.09.12 23:05) [11]
> Вы ваще топик читали, програмист...

мало читать, неплохо и понять :)


 
stas ©   (2012-09-21 09:16) [13]

>знайка   (20.09.12 23:05) [11]
Конечно, не только читал, а и сталкивался с данной проблемой и решилась она так как написано в
>Лакки   (20.09.12 11:56) [3]


 
AV ©   (2012-09-21 09:30) [14]

Ув. г.Знайка, я читаю все посты. Если я игнорировал неоднократное замечание про try-except(catch), наверное, не просто так же.

я же написал

> Эврика никакого исключения не видит

У меня 6.1 версия. Она видит все исключения, и она видит порой там, где его и нет :). Было пару раз. т.е. с ней (eureka) - исключение. Отключишь ее - нет никакого исключения. Я gunsmokerу писал об этом. Не помню что он мне ответил, правда.  :) Не суть. Try-except - для другого.

Если я напишу компонент, который будет периодически выдавать showmessage об ошибках своей логики, такие ошибки ты не загасишь try-except
Но если я напишу св-во IgnorLogicError, ты можешь написать IgnorLogicError := true; и showmessage об ошибках логики компонент не будет выдавать.
Вот тут тоже самое, примерно.


 
Лакки   (2012-09-21 10:06) [15]

знайка   (20.09.12 12:00) [4]
try catch...


TWebBrowser - это многопоточный COM-контрол.  Черный ящик.  Живет в своем апартменте и знать ничего не знает про то, кто и как его использует. Функционирует в своих,  одному ему ведомых потоках, никак не связанных с потоком программы, которая его использует (ну хорошо, они иногда связываются, когда у барузера происходят определенные события; забегая вперед и возвращаясь к ранее сказанному, напомню, что у него нет событий перехвата исключений). Вообще, на практике большинство дополнительной работы с этим контролом построено на передаче команд через COM-интерфейс и потом, если нужно по месту, кручение в цикле в ожидании, пока контрол обработает эту команду и перейдет в нужное состояние. Ошибки возникают и обрабатываются внутри контрола. И естественно, нет никакой возможности перехватить в коде Delphi ошибки, которые возникают внутри этого контрола. Единственный способ решения вопроса, поднятого в данной ветке - "попросить" WebBrowser не выдавать сообщений (Silent := true). К сожалению, далеко не факт, что он будет выполнять эту просьбу во всех возможных ситуациях.


 
знайка   (2012-09-21 16:35) [16]

А я вот пишу и помогает. И окошек не бывает.
и WebBrowser.Silent := true; не пишем..


 
DVM ©   (2012-09-22 00:16) [17]

Попробуйте Chromium Embedded - намного удобнее.


 
AV ©   (2012-09-26 09:02) [18]


> Попробуйте Chromium Embedded - намного удобнее.

Спасибо, погуглю..
Как раз придeмал, что автоматизация может и дальше пойти :) и отписываться, думаю, смогу на некоторые сообщения.


> знайка   (21.09.12 16:35) [16]
> А я вот пишу и помогает. И окошек не бывает.
> и WebBrowser.Silent := true; не пишем..

Это от сайта/страницы зависит.
Если старница перегружена js-скриптами, а если они еще и кривоватые, легко можно словить окошко



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.081 c
15-1353056660
stas
2012-11-16 13:04
2013.03.22
Chromium Embedded silent mode


11-1244657683
Galkov
2009-06-10 22:14
2013.03.22
Очень Древний Баг с прозрачностью (DoubleBuffered)


15-1339682138
jacksotnik
2012-06-14 17:55
2013.03.22
Ускорение TcxGrid


15-1331485386
PiramidaHeiopz
2012-03-11 21:03
2013.03.22
Площадь заливки чернилами


15-1350458373
TUser
2012-10-17 11:19
2013.03.22
В МИФИ завелась кафедра теологии





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский