0

我加载了一个 youtube 页面(http://www.youtube.com/user/SeaNanners/videos),我想按下“加载更多”按钮,我已经厌倦了一些事情,例如;

foreach (HtmlElement el in webBrowser1.Document.GetElementsByTagName("input"))
        {
            if (el.GetAttribute("class").Equals("yt-uix-load-more load-more-button yt-uix-button yt-uix-button-default yt-uix-button-size-default"))
            {
                    el.InvokeMember("click");
            }
        }

以及尝试就类似问题给出的其他答案; C#如何通过WebBrowser自动单击按钮 在Web浏览器中单击按钮

似乎没有人真正按下按钮。

4

1 回答 1

1

让它工作起来,又快又脏,也许你可以写得更优雅一点;-)

更新:

我已经阅读了您之前提出的问题,并相应地更新了代码。使用这段代码加载频道的所有视频(使用 webbrowserControl 可能需要一段时间)

private void button1_Click(object sender, EventArgs e)
{
    bool found = true;
    while (found)
    {
        if (webBrowser1.ReadyState == WebBrowserReadyState.Complete)
        {
            found = ClickLoadMoreButton();
            Application.DoEvents();
        }
    }
}

private bool ClickLoadMoreButton()
{
    var buttons = webBrowser1.Document.GetElementsByTagName("button");
    foreach (HtmlElement el in buttons)
    {
        var firstChild = el.FirstChild;
        if (firstChild != null)
        {
            if (!string.IsNullOrEmpty(firstChild.InnerText))
            {
                if (firstChild.InnerText.ToLower().Replace(" ", string.Empty).Equals("loadmore"))
                {
                    el.InvokeMember("click");
                    return true;
                }
            }
        }
    }
    return false;
}
于 2013-09-10T14:14:56.190 回答