【发布时间】:2016-06-23 21:38:32
【问题描述】:
我遇到了这种情况,我一直在努力解决,但没有任何运气。我在 Excel 中使用 VBA 导航到网站。在这个网站上,我使用 VBA 单击 id 为 id-01 的 div,效果很好。点击那个div#id-01会生成另一个id为id-02的div,我想点击这个div。如何使用 VBA 点击带有id-02 的 div?
Set IE = CreateObject("InternetExplorer.Application")
'
'code to navigate to site and wait for site to load
'
'Get div#id-01 and click on it
Set first = IE.document.getElementById("id-01")
'click it
first.click
'The following code does not work because
Set second = IE.document.getElementById("id-02")
second.click
【问题讨论】:
-
也许你可以使用tag name来代替元素ID?似乎这应该作为 id-01 的“孩子”来处理,而不是仅仅点击 id-01 然后 id-02
-
页面渲染完成后,在我点击
div#id-01之前,没有div#id-02。我想,您将div#id-01称为div#id-01的子代或将其作为目标将没有什么不同,因为对象ID.document不会更新div#id-02的存在,如果对象知道id- 02,上面的代码应该可以工作了。 -
可能重复此:stackoverflow.com/questions/11820548/…。建议将
Application.Wait Now + TimeSerial(0,0,x)置于first.click和Set second = ...之间,其中x是一些秒数。 -
@Robin,感谢您向我指出资源,不,情况不同。第二个 div 是在用户交互时生成的,而不是在页面加载完成之前生成的。问题不同。
-
您是否尝试过在 ie.busy 或未准备好时循环播放?
标签: vba excel internet-explorer-9