Anglesharp 在 DoClick() 之后获取节点文本

Anglesharp get node text after DoClick()

我有一个HTML代码:

<div class="contact-button link-phone {'path':'phone', 'id':'gtziy', 'id_raw': '243468578'} atClickTracking contact-a"
data-rel="phone">
    <i data-icon="phone"></i>
    <strong class="xx-large">HIDDEN TEXT HERE</strong>
    <span class="spoiler">SHOW</span>
</div>

我正在使用此代码获取 div:

IHtmlElement nodeToClick = (IHtmlElement)document.All.First(m =>
                    m.HasAttribute("class") &&
                    m.ClassList.Contains("contact-button") &&
                    m.HasAttribute("data-rel") &&
                    m.GetAttribute("data-rel") == "phone");

然后我使用 DoClick() 单击节点:

nodeToClick.DoClick();

div 的 HTML 代码应更改为:

<div class="contact-button link-phone {'path':'phone', 'id':'gtziy', 'id_raw': '243468578'} atClickTracking contact-a activated"
data-rel="phone">
    <i data-icon="phone"></i>
    <strong class="xx-large">TEXT HERE</strong>
    <span class="spoiler" style="display: none;">SHOW</span>
</div>

但是 nodeToClick.TextContent returns 我的值与之前相同 nodeToClick.DoClick().

我尝试做的事情:

但是 none 这对我有用

如何获取我单击的元素的新 TextContent?

我很困惑为什么当您单击 div 时会发生 任何事情。 post 您缺少的是 AngleSharp 配置。

我想你猜 AngleSharp 带有 JS 支持 - 它没有。 AngleSharp 本身只是一个浏览器引擎核心 - 它带有所有连接点和最基本的功能,例如 HTML5 解析器。还有另一个用于提供 JS 支持的库 - 但它非常初级/实验性,可能不适用于您的情况。

此外,我假设由于您是在自己的代码中下载 HTML,因此 JS 无论如何都无法工作(您需要像浏览器一样使用 AngleSharp - 您也不提供的浏览器 HTML,但是 URL,浏览器会完成剩下的工作 - AngleSharp 是一样的,这里使用的东西叫做 BrowsingContext)。

长话短说。您不能只单击静态的东西并期望发生动态的事情。另外,您应该仔细阅读 documentation of AngleSharp - 我想它可能有所帮助。

HTH!