使用VBA在新窗口中单击网站上的内部文本

时间:2018-11-22 11:47:04

标签: html excel vba excel-vba web-scraping

我开始使用VBA与网站进行交互,但偶然发现了一个我在这里找不到解决方案的问题。 我试图单击出现在“新窗口”上的文本(这不是一个新窗口,它只是一个正方形,显示在页面顶部,当我单击所需的行时就会消失)。这是该“正方形”中的代码:

<div id="retornoBuscaDados"><table style="margin: 0px; padding: 0px; border: 
0px currentColor; border-image: none; width: 500px;"><tbody><tr class="par"> 
<td style="width: 100px; cursor: pointer;">nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn 
nnnnnnn </td></tr><tr class="impar"><td nowrap="" colspan="1">&nbsp;</td> 
</tr><tr class="par"><td nowrap="" colspan="1">&nbsp;</td></tr><tr 
class="impar"><td nowrap="" colspan="1">&nbsp;</td></tr><tr class="par"><td 
nowrap="" colspan="1">&nbsp;</td></tr><tr class="impar"><td nowrap="" 
colspan="1">&nbsp;</td></tr><tr class="par"><td nowrap="" colspan="1">&nbsp; 
</td></tr><tr class="impar"><td nowrap="" colspan="1">&nbsp;</td></tr><tr 
class="par"><td nowrap="" colspan="1">&nbsp;</td></tr></tbody></table></div>

我要单击的确切行中的代码为:

<td style="width: 100px; cursor: pointer;">

但是该行显示的是文本“ nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn”(我替换为向您显示的实际文本)。所有其他行均为空白。 我不知道该怎么办,直到现在,我只使用getelementbyid(“ xx”)。单击其他代码中的单击步骤。

1 个答案:

答案 0 :(得分:1)

假设您正在使用Internet Explorer(尽管CSS选择器组合可以应用于从XMLHTTP请求填充的HTML文档)

ie.document.querySelector("#retornoBuscaDados td").Click

还假设不在父框架/ iframe /新窗口中,并且您有足够的时间加载页面,然后再尝试单击

While ie.Busy Or ie.readyState < 4: DoEvents: Wend
ie.document.querySelector("#retornoBuscaDados td").Click

querySelector返回指定模式的第一个匹配项。模式#retornoBuscaDados td正在寻找ID为retornoBuscaDados且具有子td元素的父元素。它将在此实例中检索第一个孩子。您还可以使用#retornoBuscaDados td:first-child

的伪选择器