TWebBrowserでリンクを自動的にクリックする方法は?

解決


まあく  2008-06-20 09:44:50  No: 31039

はじめて質問させていただきます。
WinXPでDelphi7を使用しています。

TWebBrowserで複数のリンクがあるページを表示させ、
その中から、任意のリンクを自動的にクリックさせる方法を教えてください。

宜しくお願いします。


Mr.XRAY  2008-06-21 01:00:37  No: 31040

>させる方法を教えてください。

教えません!!(笑).
こういうのを丸投げといって,ネットでは嫌われます.
これでは,俺の代わりに誰かやってくれ!! と言っているのと大差ありません.
でも,質問がばくぜんとしているので,できないでしょうけど(仕様が不明).

させる方法を教えてください ----> させるアプリを開発してください.

でしたら,高額で請け負いましょうか?
冗談はともかく,エディタで以下のコードを書いて,例えば AAA.htm  と
いう名前で保存しします.
保存したら実行します.

<html>
<body>
<a href="http://homepage2.nifty.com/Mr_XRAY/">Mr.XRAY</a>
</body>
</html>

すると,ブラウザで  Mr.XRAY  と表示されるハズです.このMr.XRAYの
文字をクリックすると,http://homepage2.nifty.com/Mr_XRAY/  のページ
が表示されます.
ブラウザで表示される内容は,上のようなHTML(言語というのでしょうか)で
書かれています.ブラウザで[ソース]の表示というのがそれです.
つまり,まず,そのソースの中の
<a href= 
の次に書かれているURLを取得しなければなりません.
ということは,その前にそのソースを取得しなければなりません.

方法は,この掲示板を検索するといろいろ出てきます.
それで,不明なところがあったらまた質問されてはいかがでしょうか.
TWebBrower 取得  等で検索(複数の語句のAND検索)するといいかも知れません.

検索(Google)
http://madia.world.coocan.jp/cgi-bin/DelphiBBS/wwwlng.cgi?search

では,がんばってください.


通りすがり  2008-06-21 22:35:46  No: 31041

> まあくさん
自分でどこまでできているのか?何をキーにリンクを選択したいのか?など、
今後はもう少し具体的に質問をされた方が良いと思います。

> Mr.XRAY
これは、SHDOCVW、MSHTMLを理解していれば答えることができる質問です。
TWebBrowserから任意のリンクをクリックしたいということに対して、
HTMLの構造やHTMLの取得方法に言及するのは的確ではありません。

procedure TForm1.Button1Click(Sender: TObject);
var
  Url, X: OleVariant;
  Document: IHTMLDOcument2;
  ElementCollection: IHTMLElementCollection;
  Element: IHTMLElement;
  i: Integer;
  Index: OleVariant;
  Name: WideString;
  Href: string;
begin
  Url:='http://www.google.co.jp/';
  WebBrowser1.Navigate2(Url, X, X, X, X);

  while (WebBrowser1.Busy) do
    Application.ProcessMessages;

  Document:=WebBrowser1.Document as IHTMLDocument2;
  ElementCollection:=Document.all.tags('a') as IHTMLElementCollection;

  for i:=0 to ElementCollection.length - 1 do
  begin
    Element:=ElementCollection.item(OleVariant(i), Index) as IHTMLElement;

    // 名前から任意のリンクを選択する場合
    Name:=Element.outerText;
    if Name = '検索オプション' then
    begin
      Element.click;
      Exit;
    end;
{
    // アドレスから任意のリンクを選択する場合
    Href:=Element.getAttribute('href', 0);
    if Href = 'http://www.google.co.jp/advanced_search?hl=ja' then
    begin
      Element.click;
      Exit;
    end;
}
  end;
end;


通りすがり  2008-06-21 22:39:34  No: 31042

> Mr.XRAYさん
先の回答でお名前から敬称が抜けていました。
失礼しました。


Mr.XRAY  2008-06-22 00:21:27  No: 31043

フォローサンクスです.

>先の回答でお名前から敬称が抜けていました。
Mr.がついているのでいいのではないかと... (笑).


まあく  2008-06-22 05:34:52  No: 31044

> Mr.XRAY様
今後は質問の仕方に気をつけます。
ご指摘ありがとうございました。

> 通りすがり様
サンプルプログラムありがとうございました。
おかげさまで、解決することができました。

リンクはNAME属性がないので、どのように自動クリックすればいいのか
ずっと悩んでいました。

今後は、もっと具体的に質問させていただきます。
この度は、本当にありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加