0

正しく理解する必要があります - この問題には次のアクセサリがあります。

  1. スクロール時にアクティブになる遅延ローダーのあるページがあります
  2. Lazy loader は JavaScript によって処理されます
  3. 100% ロードされるページの最後に、有効にする必要があるボタンが表示されます。

以下は、私が書き込もうとした例です。

    _WebContent.wbThread1.Focus();
    int length = 100;

    new Thread(() =>
        {
            for (int i = 0; i <= length; i++)
            {
                System.Windows.Forms.SendKeys.Send("{PGDN}");

                Thread.Sleep(new TimeSpan(0, 0, 3));
                st.Start();
            }
        }).Start();

すべて順調に進んでいますが、イベント SendKey の処理に問題があります。イベントのリージョンにフォーカスする必要があり、フォーカスが失われた場合は何も消費しません。


MSDN で情報を探し始めたところ、スクロールの処理に非常に興味深いものを見つけました。

_WebContent.wbThread1.Document.Body.ScrollIntoView (true) / / allows scrolling to the top
_WebContent.wbThread1.Document.Body.ScrollIntoView (false) / / allows scrolling to the bottom
_WebContent.wbThread1.Document.Body.ScrollLeft = 100, / / sets the offset to the left
_WebContent.wbThread1.Document.Body.ScrollTop = 100, / / sets the upward shift
var rect = _WebContent.wbThread1.Document.Body.ScrollRectangle; / / returns the current position

この機能の組み合わせは役に立ちませんでした。理論的にはコードは機能しますが、実際にはこの例では成功しませんでした。

スクロールを処理した後のイベントで、次のようなものを実行します。

HtmlElementCollection _HtmlElementCollect = _WebContent.wbThread1.Document.GetElementsByTagName("A");
foreach (HtmlElement link in _HtmlElementCollect)
            {
                if (link.InnerText.Equals("Load More..."))
                    link.InvokeMember("Click");
            }

どのような提案がありますか? このスクロールをどのように行うことができますか?

4

1 に答える 1

1

を使用して一番下までスクロールできます

webCtrl.Document.Window.ScrollTo(0, Int32.MaxValue);
于 2012-12-25T13:59:20.930 に答える