Конференция "Сети" » webbrowser + radiobutton
 
  • 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; но все равно не работает, выдает ошибку именно на этой строке. Подскажите пожалуйста как прописать чтобы поиск производился в нужном фрейме.
  • И. Павел © (26.08.11 12:52) [1]
    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"
  • И. Павел © (26.08.11 13:33) [5]
    Скорее всего первая строка должна выглядеть так (код тестить сейчас нет возможности):
    ovElements := WebBrowser1.OleObject.Document.frames.item(i).document.Forms.Item( 0 ).Elements;


    Т.е. у фрейма есть свой объект Document (IHTMLDocument2), с которым можно работать как и с глобальным Document.
  • И. Павел © (26.08.11 13:36) [6]
    Опечатался:
    ovElements := WebBrowser1.OleObject.Document.frames.item(0).document.Forms.Item( 0 ).Elements;
  • Arxant (26.08.11 14:24) [7]
    Спасибо, заработало :)
 
Конференция "Сети" » webbrowser + radiobutton
Есть новые Нет новых   [134435   +14][b:0][p:0.001]