2009-07-15 6 views
1

私はProcessクラスを使用してInternet Explorerを起動し、URLに行くc#プログラムを持っています。C#のSendKeysクラス

次に、特定の文字列をそのページの検索ボックスに送信し、返された結果の画面全体をコピーして処理します。

私が遭遇した問題は、このです:

私は、Internet Explorer(アクティブウィンドウ)内のページに文字列を送信するためにSendKeys.SendWait(「ABC」)を使用します。プログラムが実行されているときに、私はページ上に表示されているものが "bc"、時には "abbc"、時には "abcc"、時には正しく "abc"と表示されることがあります。それぞれの走りは全く違って見えます。この問題は、私がテストした複数のマシンで発生しました。しかし、私が最初に開発した私自身のマシンでは、それが起こるのを見たことはありません - 私が他のマシン(すべてXPを実行している)でテストするときだけです。

私はSendWaitステートメントの間に遅延の問題を処理するために遅延を入れましたが、同じSendWaitステートメントでも問題があると私は信じていますか?

ヘルプが必要です。ありがとう。

+0

すべての結果をコピーするとどういう意味ですか?それはスクリーンショットかhtmlソースを取っていますか? HTMLソースなら、そんなことをするwatinなどのツールがあると思います。 – shahkalpesh

+0

いいえ、ctrl-cで2回のキーストロークで送信します – Saobi

+0

ctrl + cとは何ですか?それはページの内容全体を選択し、Ctrl + Cを押すか?そのような、あなたは単語にHTMLページビューを貼り付けることができますか? – shahkalpesh

答えて

1

あなたがウェブページのソースをつかむしようとしている場合は、その後、私はその後、私は思います、あなたがページ上のレンダリングされるテキストをつかむしようとしている場合

WebClient client = new WebClient(); 
client.DownloadString("http://mypage"); 

のようなものを使用してお勧めしたいですHtmlAgilityPackを見ることをお勧めします.HtmlAgilityPackを使うと、ページの内容をもっと簡単に把握することができます。 また、あなたはdivタグ、たとえば、間のテキストを選択するために、正規表現を利用することができます

RegEx textSelector = new RegEx("<div>([^<]+?)</div>"); 
string pageText = ""; 
foreach(var match in textSelector.Matches(myHtml)) 
    pageText += match.Groups[0].Value; 

警告を、そのコードは、私の頭の上をオフに書かれてテストされていない、そしておそらくかなりになりましたネストされたタグを使用したランダムな結果:)

関連する問題