-
Arxant (26.08.11 12:12) [0]На странице есть фрейм под номером 0. На нем есть несколько radiobutton. Хочу кликнуть по одному из низ. Нашел следующий код:
procedure TForm1.Button1Click(Sender: TObject);
var
ovElements: OleVariant;
i: Integer;
begin
ovElements := WebBrowser1.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 ) = 'RADIO' ) then
if ( ovElements.item( i ).Value = 'Some text' ) then
ovElements.Item( i ).Click;
end;
Насколько понял, чтобы искать в нужном фрейме надо строку ovElements := WebBrowser1.OleObject.Document.Forms.Item( 0 ).Elements; изменить на ovElements := WebBrowser1.OleObject.Document.frames.item(0).Elements; но все равно не работает, выдает ошибку именно на этой строке. Подскажите пожалуйста как прописать чтобы поиск производился в нужном фрейме. -
WebBrowser.Document.Frames.Item(N).Document - это документ, соответствующий N-ому фрейму. Нумерация начинается с нуля.
-
Arxant (26.08.11 13:04) [2]
> WebBrowser.Document.Frames.Item(N).Document - это документ,
> соответствующий N-ому фрейму. Нумерация начинается с нуля.
>
Спасибо за ответ, но я не совсем понимаю как мне использовать это в приведенном выше коде. Извините, но методом перебора я ничего не добился, "знания" Делфи у меня начальные. -
Arxant (26.08.11 13:23) [3]Вот этот тип ошибки выдает по строке ovElements := WebBrowser1.OleObject.Document.frames.item(0).Elements;
-
Arxant (26.08.11 13:26) [4]Зкщрусе ** Project ** raise exeption clas EOleError whith message "Method "Elements" not supported by automation object"
-
Скорее всего первая строка должна выглядеть так (код тестить сейчас нет возможности):ovElements := WebBrowser1.OleObject.Document.frames.item(i).document.Forms.Item( 0 ).Elements;
Т.е. у фрейма есть свой объект Document (IHTMLDocument2), с которым можно работать как и с глобальным Document. -
Опечатался:
ovElements := WebBrowser1.OleObject.Document.frames.item(0).document.Forms.Item( 0 ).Elements; -
Arxant (26.08.11 14:24) [7]Спасибо, заработало :)