VBA:如何在HREF和CLASS HTML tag Aviable的帮助下单击网页中的下拉列表

VBA:如何在HREF和CLASS HTML tag Aviable的帮助下单击网页中的下拉列表,html,vba,excel,Html,Vba,Excel,我正在尝试将我的一个网站在安全服务器上的工作自动化,该代码帮助我登录到网页,但在此之后,我必须单击菜单栏中的下拉列表,其中可用的HTML标记仅为CLASS和HREF HTML <li> <a Class = "childmenu" href="./1713363899/ViewLogsPage"> <span>Logs</Span> </a> </li> 但当我在调试模式下运行我的代码时,这段代码不起作用,

我正在尝试将我的一个网站在安全服务器上的工作自动化,该代码帮助我登录到网页,但在此之后,我必须单击菜单栏中的下拉列表,其中可用的HTML标记仅为CLASS和HREF

HTML

<li>  
<a Class = "childmenu" href="./1713363899/ViewLogsPage">  
<span>Logs</Span>  
</a>  
</li>
但当我在调试模式下运行我的代码时,这段代码不起作用,在执行这一行“…ClassName(“childmenu”)”后跳过,并跳转到END sub

试试看

If Instr(MyHTML_Element.href, "1713363899/ViewLogsPage") Then MyHTML_Element.Click

如果不起作用,请在使用If的行之前添加debug.print MyHTML_Element.href。链接可能是在下载页面时生成的

使用
.childmenu[href='./1713363899/ViewLogsPage']
的CSS选择器。它读作具有classname
childmenu
的元素,具有属性
href
和值
。/1713363899/ViewLogsPage'


正在运行的CSS选择器:


VBA:

您可以使用
.document
.querySelector
方法应用CSS选择器

MyBrowser.document.querySelector(".childmenu[href='./1713363899/ViewLogsPage']").Click

有关的信息:

  • 奖金轨道:

    回到你的CSS忍者技能之家-我与此无关。今天找到的,很有趣


    或者通过以下方式尝试测试仪:

    谢谢@MarcinSzaleniec我为HTMLDoc.getElementsByClassName(“childmenu”)debug.print MyHTML_Element.href(MyHTML_Element.href,“1713363899/ViewLogsPage”)中的每个MyHTML_元素尝试了
    然后是MyHTML_元素。单击
    ,但它们不起作用。我尝试了你提到的代码,并没有使用调试打印(我以前没有使用过)。但是我可以看到,代码在第1行
    之后甚至没有对HTMLDoc.getElementsByClassName(“childmenu”)
    中的每个MyHTML\u元素执行任何注释,它只是跳转到结束子调试。Print在即时窗口中打印其参数的值。您可以通过快捷键ctrl+G显示即时窗口,这非常有用。我怀疑您的for each循环了0个元素。要检查它,您可以添加“debug.print Ubound(HTMLDoc.getElementsByClassName(“childmenu”)”)。它说预期的数组也是预期的。HTMLDoc.getElementsByClassName(“childmenu”)应该是一个HTML元素数组,不是吗?现在我认为你之前的代码中一定有错误。哦,我的。。。将错误发布为图片已经是错误的做法,但拍摄屏幕图片。。。试着在你的windows中找到剪贴工具,或者安装例如GreenShotcode,我的帖子中已经有了,我放了这个屏幕截图来描述/显示代码只是从黄线跳到尾子,没有执行或触摸其他行…想知道为什么会发生这种情况,谢谢@James Z
    MyBrowser.document.querySelector(".childmenu[href='./1713363899/ViewLogsPage']").Click