5

twebbrowserでテキストボックスの値を変更するのに問題があります。私は他のいくつかの方法を試しWebBrowser1.OleObject.Document.getElementById('verification_control_0').value := 'mytext';ましたが、うまくいかないようです。

ウェブサイトのコード:

 <div id="verification_control_0" class="verification_control">
 <div class="smalltext">
 What are the first 3 letters of our website's name?:<br />
 <input type="text" name="register_vv[q][71]" size="30" value=""  tabindex="6"    class="input_text" />
  </div>
 </div>

値の変更方法を教えていただければ幸いです<input type="text" name="register_vv[q][71]" size="30" value="" tabindex="6" class="input_text" />。読んでくれてありがとう、そしてすべての返信。

4

2 に答える 2

7

これを試して:

procedure TForm1.Button1Click(Sender: TObject);
var
  col: IHTMLElementCollection;
  el: IHTMLInputElement;
begin
  col := (WebBrowser1.Document as IHTMLDocument3).getElementsByName('register_vv[q][71]');
  if col.length <> 0 then
  begin
    el := col.item(0, 0) as IHTMLInputElement;
    el.value := 'mytext';
  end;
end;

IE8標準モードでは、属性に対してのみgetElementById大文字と小文字を区別して一致を実行します。IE7標準モードと以前のモードでは、このメソッドは属性と属性 の両方で大文字と小文字を区別しない一致を実行するため、予期しない結果が生じる可能性があります。ID
IDNAME

したがって、TWebBrowserIE7標準モードで動作し、以前のモードgetElementByIdでも動作するはずの場合は、次のようになります。

procedure TForm1.Button2Click(Sender: TObject);
var
  el: IHTMLElement;
  inputElement: IHTMLInputElement;
begin
  el := (WebBrowser1.Document as IHTMLDocument3).getElementById('register_vv[q][71]');
  if Assigned(el) then
    if Supports(el, IID_IHTMLInputElement, inputElement) then
      inputElement.value := 'mytext';
end;

コレクションを使用getElementsByNameして要素を検索することをお勧めしますNAME


編集: @SertacAkyuz最初のコメント:

WebBrowser1.OleObject.Document.getElementByID('register_vv[q][71]').Value:='tes‌​t';

OPはコードをテストせず(OPがIEブラウジングモードを明示的に変更しない限り、デフォルトで機能するはずgetElementByID('verification_control_0')です)、代わりに使用されたと確信しています。これは要素であり、メソッドはサポートさDIVれていません。value(したがって、エラーメッセージ"Method 'value' not supported by automation object")。

于 2013-01-21T10:03:21.760 に答える
0

getElementById('verification_control_0')は、'値'を持たないDIV要素を取得します。

テキストボックスにIDがありません。テストの場合は、「name」属性を「id」に次のように変更します

<input type="text" id="register_vv[q][71]" size="30" value=""  tabindex="6" class="input_text" />

このようにコードを変更します

WebBrowser1.OleObject.Document.getElementById('register_vv[q][71]').value := 'mytext';
于 2013-01-21T07:48:53.483 に答える