0

WPF ブラウザーに問題があります。ウェブページをロードしたい。完全にロードされるのを待ってから、いくつかの検索入力を入力してから、結果を取得してExcelに入力します.

これができません。pagecomplete_event がロードされる前に、メイン プログラムがロードされ、実行が完了します。シナリオは次のとおりです。

  1. コンポーネント プロバイダーの Web サイトを読み込む
  2. 検索オプションに移動し、EXCEL ファイルを読み取っている部品番号を検索します
  3. 部品番号を検索バーに入れ、検索をクリックします
  4. 詳細をダウンロード
  5. 多くの部品に対して手順を繰り返します

私はこれをWinFormsで行いましたが、うまくいきました。問題は呼び出しDOEVENTSです。特に大きなリストを操作している場合、プログラムがハングすることがあります。だからWPFでやりたかった。

イベントを入れましたが、先ほども言ったように、メインプログラムが終わってからLoad_Completeそのイベントに来ます。

検索してこのリンクを取得しました: How to create and use WebBrowser in background thread . しかし、それは役に立たないようです-WPFにはないようですSystem.Windows.Deployment-赤い波線の下線が引かれます。私が見つけた他の解決策も役に立たないようです。

4

1 に答える 1

0

これはしばらくの間私を悩ませていましたが、最終的に解決策を見つけました。今、私はvb.netにかなり慣れていないので、これは最善の方法ではないかもしれませんが、うまくいきました. これは vb.net にあります。おそらく簡単に c# に変換できます。

AddHandler (webbrowser1.LoadCompleted), AddressOf WebpageLoaded
    webbrowser1.Navigate("http://www.myWebsite.net/admin/")

これにより、WebpageLoaded サブをトリガーするイベントが作成されます。

これを使用して、ページが読み込まれるのを待ってから、アカウントにログインしました。これが私がそれをした方法です。

Private Sub WebpageLoaded()
    If webbrowser1.Url.ToString = "http://www.myWebsite.net/admin/" Then
        webbrowser1.Document.GetElementById("username").ScrollIntoView(True)
        webbrowser1.Document.GetElementById("username").SetAttribute("value", "myUsername")
        webbrowser1.Document.GetElementById("password").SetAttribute("value", "myPassword")
    End If
End Sub

これが役立つことを願っています。おそらく、ScrollIntoView を使用する必要はありません。最終的に機能するようになったので、これを使用して進行状況を確認しました。

于 2014-06-09T22:28:49.963 に答える