C# webBrowser1 如何按类获取元素?
Posted
技术标签:
【中文标题】C# webBrowser1 如何按类获取元素?【英文标题】:C# webBrowser1 How to get element by class? 【发布时间】:2020-09-28 07:57:32 【问题描述】:我试图通过类名从此页面“https://steamcommunity.com/id/giogongadzee”获取 Steam 名称。这是html代码:
<div class="profile_header_bg">
<div class="profile_header_bg_texture">
<div class="profile_header">
<div class="profile_header_content">
<div class="profile_header_centered_persona">
<div class="persona_name" style="font-size: 24px;">
<span class="actual_persona_name">Ghongha</span> <--- i want to get "Ghongha" in MessageBox.Show();
这是我试图做但没有工作的...
private void GetInfo_Click(object sender, EventArgs e)
var links = webBrowser1.Document.GetElementsByTagName("a");
foreach (HtmlElement link in links)
if (link.GetAttribute("className") == "actual_persona_name")
MessageBox.Show(link.InnerText);
else
MessageBox.Show("0");
帮助:/
【问题讨论】:
这是一个<span>
元素,而不是一个锚点,所以:var element = webBrowser1.Document.GetElementsByTagName("SPAN").OfType<HtmlElement>().FirstOrDefault(elm => elm.GetAttribute("className").Equals("actual_persona_name"));
。万一您下次需要 Links 集合,WebBrowser 已经自己提供了一个(WebBrowser.Document.Links),无需重新创建。
你也应该先应用这个:How can I get the WebBrowser control to show modern contents?。
【参考方案1】:
我在这里找到了一个可行的答案: https://social.msdn.microsoft.com/Forums/vstudio/en-US/a22cafb7-f93c-4911-91ce-b305a54811fa/how-to-get-element-by-class-in-c
Get the "className" attribute.
static IEnumerable<HtmlElement> ElementsByClass(HtmlDocument doc, string className)
foreach (HtmlElement e in doc.All)
if (e.GetAttribute("className") == className)
yield return e;
【讨论】:
以上是关于C# webBrowser1 如何按类获取元素?的主要内容,如果未能解决你的问题,请参考以下文章
使用 WebDriver 在 codeceptJS 中按类获取元素
c# webBrowser如何获取弹出提示框内容并模拟点击?