私はTWebbrowserコンポーネントといくつかのボタンを持っています。これまではうまくいきましたが、1つの手順でウェブサイトのボタンをクリックして、追加情報を表示したいときにクリックする必要があります。Delphi:Webbrowser.Document - > IDで要素の存在を確認してください
だから私はこれを持っている:
WebBrowser1.OleObject.Document.GetElementByID('linkDtlC0-0').Click();
WebBrowser1.OleObject.Document.GetElementByID('linkDtlC0-1').Click();
WebBrowser1.OleObject.Document.GetElementByID('linkDtlC0-2').Click();
その後、私は上をクリックして次の3つの要素を表示するには、Webサイト上のボタンをクリックする必要があります。これまでのところ問題はありませんが、ボタンをクリックすると、サイトでは3つの要素を表示するのに数秒かかります。
問題: ボタンをクリックした直後に要素をクリックしようとすると、この名前で(まだ)要素がクリックされていないというエラーが表示されます。もちろん、私のプログラムは数秒待つことができます(もっと)確信してからクリックしようとしますが、私は時間を無駄にしたくありませんので、私の質問は です。名前)がTWebbrowser内のドキュメントに存在しますか?
'OnDocumentComplete'イベントを処理し、' pDisp = TWebBrowser(送信者).ControlInterface'(つまり、文書は "準備完了" であることを意味する)場合があり確認してください。その場合は、文書の移動を開始します。特定の要素が存在するかどうかを調べるには、 'GetElementByID'によって返された参照が' Assigned'であるかどうかだけを調べることができます。 – Victoria
これも機能しません。あなたの答えは正しいかもしれませんが、私はTWebbrowserの疑わしい動作に遭遇しました:私は手動でボタンをクリックし、希望の要素が現れるまで数秒待っていました。次に、 'WebBrowser1.OleObject.Document.All.Item(i).ID);を使ってすべてのIDをリストアップし、最初の3つの要素が正常に表示されましたが、次の(4番目の)通常のブラウザ(chromeとfirefox)は、4番目の要素がそこにあるはずだと私に伝えていました。私のTWebbrowserは、何らかの未知の理由でサイトの変更を無視しているようです。 – qGold
サイトでは時には最初の数字「0」を3回使用することもありますが、最初の数字を大きくする前に4〜5回使用することもあります。これは私にはあまり明らかではありませんでした。私はこれが毎回これを行うと思っていたが、それはそうではない。この質問をして申し訳ありませんが、これはTWebbrowserコンポーネントの問題だと思いました。 - – qGold