【问题标题】:VB.Net Finding class ID to click when it's buried in the DOMVB.Net 查找隐藏在 DOM 中时要单击的类 ID
【发布时间】:2019-08-04 21:20:38
【问题描述】:

Example of the tree I'm dealing with

我正在尝试单击我运行的 IG 帐户上的“关注者”按钮,以查看自动关注我的新用户。 (出于隐私原因,包含图片中的示例不是我的帐户)我可以找到班级 ID,但使用类似

 Dim allelements As HtmlElementCollection = webBrowse.Document.All
    For Each webpageelement As HtmlElement In allelements
        If webpageelement.GetAttribute("class") = "g47sy " Then
            webpageelement.InvokeMember("click")
        End If
    Next

对我没有任何回报......我知道这是因为这个类被埋在 JS 中,然后更进一步。我这辈子都不知道如何检查埋在里面的东西的元素..

任何帮助将不胜感激!谢谢!

【问题讨论】:

  • GetElementsByTagName(),其中 TAG 名称是 SPAN,然后是 .GetAttribute("className"),而不是 "class"。使用 LINQ,您只需在 GetElementsByTagName() 返回的集合中添加 .WhereFirstOrDefault 子句即可直接挑出一个。
  • 非常感谢!在您的帮助下,我能够弄清楚。我需要单击那个不起作用的元素。我必须给它一个 id 才能点击它。 webpageelement.setattribute("id", "WhateverName")
  • 我还不能说我知道如何使用 LINQ,但会尝试弄清楚。
  • 你不需要先给它一个ID。如果您已找到该元素,只需像您已经做的那样在其上调用InvokeMember("click")。您需要在代码中更改的是检查 className 属性而不是 class,并更正最后两个字母的大小写(它是 g47SY 而不是 g47sy)。

标签: css vb.net class dom invokemember


【解决方案1】:

由 Jimi 在 cmets 发表:

GetElementsByTagName(),其中 TAG 名称是 SPAN,然后是 .GetAttribute("className"),而不是“class”。使用 LINQ,您只需将 .Where 或 FirstOrDefault 子句添加到 GetElementsByTagName() 返回的集合中即可直接挑出一个。 – Jimi 12 小时前

【讨论】:

    猜你喜欢
    • 2018-09-29
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多