Vba 如何在源代码中检测按钮是否被禁用

Vba 如何在源代码中检测按钮是否被禁用,vba,web-crawler,Vba,Web Crawler,我想浏览一个网站。它有下拉菜单。如果在下拉菜单中未选择任何内容,则搜索按钮将灰显/不可单击。按钮的源代码如下所示: <br> <span class="search search-disabled" id="by_item">Search</span> <span class="reset search-disabled" id="reset_item">Reset</span> <div class="clear"> ::

我想浏览一个网站。它有下拉菜单。如果在下拉菜单中未选择任何内容,则搜索按钮将灰显/不可单击。按钮的源代码如下所示:

<br>
<span class="search search-disabled" id="by_item">Search</span>
<span class="reset search-disabled" id="reset_item">Reset</span>
<div class="clear">
::before
::after
</div>
<br>
<br>
<span class="search" id="by_item">Search</span>
<span class="reset" id="reset_item">Reset</span>
<div class="clear">
::before
::after
</div>
<br>
Set btn = ie.document.getElementsByClassName("search")(0)
If InStr(1, btn.className, "search-disabled", vbTextCompare) Then
    'your code when button is disabled
Else
    'your code when button is enabled
End If

搜寻 重置 ::之前 ::之后
填充下拉菜单时,按钮将启用,源代码如下:

<br>
<span class="search search-disabled" id="by_item">Search</span>
<span class="reset search-disabled" id="reset_item">Reset</span>
<div class="clear">
::before
::after
</div>
<br>
<br>
<span class="search" id="by_item">Search</span>
<span class="reset" id="reset_item">Reset</span>
<div class="clear">
::before
::after
</div>
<br>
Set btn = ie.document.getElementsByClassName("search")(0)
If InStr(1, btn.className, "search-disabled", vbTextCompare) Then
    'your code when button is disabled
Else
    'your code when button is enabled
End If

搜寻 重置 ::之前 ::之后
例如,对于搜索按钮:我想检查该按钮是禁用还是启用的,以便我可以继续使用代码。我需要通过类名找到它,id不适用于我的代码。但当我尝试查找“搜索禁用”时,有时会出现错误


如何检查按钮是启用还是禁用?

空格前的第一个单词是您应该查找的类名(
搜索
重置
)。您可以通过`className属性提取当前类名,并检查它是否包含您要查找的关键字。假设您使用的是IE对象,它是源代码中的第一个元素,示例代码应该如下所示:

<br>
<span class="search search-disabled" id="by_item">Search</span>
<span class="reset search-disabled" id="reset_item">Reset</span>
<div class="clear">
::before
::after
</div>
<br>
<br>
<span class="search" id="by_item">Search</span>
<span class="reset" id="reset_item">Reset</span>
<div class="clear">
::before
::after
</div>
<br>
Set btn = ie.document.getElementsByClassName("search")(0)
If InStr(1, btn.className, "search-disabled", vbTextCompare) Then
    'your code when button is disabled
Else
    'your code when button is enabled
End If

空格前的第一个单词是您应该查找的类名(
search
reset
)。您可以通过`className属性提取当前类名,并检查它是否包含您要查找的关键字。假设您使用的是IE对象,它是源代码中的第一个元素,示例代码应该如下所示:

<br>
<span class="search search-disabled" id="by_item">Search</span>
<span class="reset search-disabled" id="reset_item">Reset</span>
<div class="clear">
::before
::after
</div>
<br>
<br>
<span class="search" id="by_item">Search</span>
<span class="reset" id="reset_item">Reset</span>
<div class="clear">
::before
::after
</div>
<br>
Set btn = ie.document.getElementsByClassName("search")(0)
If InStr(1, btn.className, "search-disabled", vbTextCompare) Then
    'your code when button is disabled
Else
    'your code when button is enabled
End If

它是由IE对象生成的吗?是由IE对象生成的吗?谢谢,我会试试这个。@Tehscript,为了澄清读者,搜索和搜索禁用都是类名,每个都可以通过
getElementsByClassName
方法找到。代码段将查找始终存在的类名(搜索),并检查第二个类名是否已分配给要搜索的节点found@jsotola的确,谢谢你的澄清。我不擅长从技术上解释事情。@Tehscript,我也是。在发布评论之前,我必须在web上仔细检查一下。谢谢,我将尝试此方法。@Tehscript,只是为了向读者澄清,搜索和搜索禁用都是类名,每个类名都可以通过
getElementsByClassName
方法找到。代码段将查找始终存在的类名(搜索),并检查第二个类名是否已分配给要搜索的节点found@jsotola的确,谢谢你的澄清。我不擅长从技术上解释事情。@Tehscript,我也是。在我发表评论之前,我不得不在网上反复检查