【问题标题】:VBA Crawler: Click on button that changes classnameVBA Crawler:单击更改类名的按钮
【发布时间】:2017-01-16 15:21:25
【问题描述】:

所以,我对 VBA/HTML 还很陌生,我正在为工作创建一个 VBA 网络爬虫。一切都很顺利,直到我在页面上遇到一个按钮,一旦单击该按钮,就会将类名从“dashboard-wrapper transition closed”更改为“dashboard-wrapper transition open”。该按钮没有 ID 或任何其他标识符。

手动单击后,会出现一个下拉菜单,其中包含可供单击的其他按钮。

该网站是用 Javascript 编写的,但该元素没有“onclick”或“onsubmit”或任何类似性质的内容。

<div class="le bubble-component-container reporting-wrapper dark">...</div>
<div tabindex= "-1" class="reporting-region">
<div>
<div class="dashboard-wrapper transition closed">

我尝试了许多不同的方法来定位按钮,但都没有成功。如果我可以提供任何其他信息,请告诉我!提前谢谢你。

【问题讨论】:

  • 您也可以按类名定位元素。或参考您确实知道的其他一些元素。 (在 javascript 中)
  • 是的。我还应该提到我已经尝试过:for each i in ie.document.getelementsbytagname("div") if i.getattribute("class") = "dashboard-wrapper transition closed" then i.click end if next i - 这对这个网页上的所有其他按钮都有效 - 但是这些类名没有改变(我什至不知道这是否是类名改变的问题)跨度>
  • 检查类名是否包含“dashboard-wrapper transition”(带有 indexOf 或类似的)而不是匹配“dashboard-wrapper transition closed”和“dashboard-wrapper transition open”。如果可以在 VBA 中使用 querySelector,则可以使用 div[class^="dashboard-wrapper transition"] 之类的选择器
  • 成功了!非常感谢你,雪莉!

标签: javascript html excel vba web-crawler


【解决方案1】:

CSS 选择器:

您还可以使用以下选择器:

.dashboard-wrapper.transition*

开头的"." 表示类名。然后dashboard-wrapper.transition* 表示带有字符串dashboard-wrapper.transition 后跟任何内容的className。


VBA:

ie.document.querySelector(".dashboard-wrapper.transition*")

注意:

除了在cmets中给出的选择器之外:

div[class^="dashboard-wrapper transition"]

这意味着 className "^" 开头,您可以使用 包含 "*" 切换到/p>

div[class*="dashboard-wrapper transition"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 2019-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-19
    • 1970-01-01
    相关资源
    最近更新 更多