C# 按webbrowser上的按钮
我加载了一个youtube页面(),我想按下“加载更多”按钮,我已经厌倦了以下几件事:C# 按webbrowser上的按钮,c#,button,browser,C#,Button,Browser,我加载了一个youtube页面(),我想按下“加载更多”按钮,我已经厌倦了以下几件事: 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-defaul
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");
}
}
以及尝试就类似问题给出其他答案;
似乎没有人真正按下按钮。让它工作了,又快又脏,也许你可以写得更优雅一点;-) 更新: 我已经阅读了您之前提出的问题,并相应地更新了代码。 使用这段代码可以加载频道的所有视频(使用webbrowserControl可能需要一段时间)
你找到按钮了吗?或者更确切地说,el.InvokeMember会被调用吗?看看源代码,它在上面并不是很清楚。在我的youtube上甚至没有任何按钮ID。再读一遍我的帖子,你搞错了。(我希望点击“加载更多”按钮,即用户频道页面上的按钮,这样我就可以加载他们的所有视频。今晚我将自己尝试,也许我会找出哪里出了问题,这将非常有帮助,我需要一个解决方案。我不知道为什么这么难D:我已经阅读了你之前提出的问题,请检查我的答案。)已注明日期的答案,用于加载频道的所有视频
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;
}