使用VBA在IE中单击一个button

我正在使用Excel VBA来尝试点击网站上的button,这里是使用inspect元素的网站代码:

<button class="_ah57t _84y62 _frcv2 _rmr7s">ClickHere</button> 

以下是我在VBA中所做的:

 Sub testcode() Dim ie As InternetExplorer Dim html As HTMLDocument Set ie = New InternetExplorer ie.Visible = True ie.Navigate "somesite.com" Do While ie.READYSTATE <> READYSTATE_COMPLETE DoEvents Loop Dim e Set e = ie.Document.getElementsByClassName("_ah57t _84y62 _frcv2 _rmr7s") e.Click End Sub 

使用debugging,我发现代码似乎在variablese中存储了一个名为“[object]”的东西,然后在e.click中出现运行时错误“438”。 我甚至尝试使用.Focus第一,但得到相同的错误。 有任何想法吗?

getElementsByClassName()函数不是返回一个元素的集合。 您需要在返回的集合上指定索引才能返回单个元素。 如果在课堂中只有一个元素,你可以简单地使用:

 ie.Document.getElementsByClassName("_ah57t _84y62 _frcv2 _rmr7s")(0).Click 

(0)指定从类返回的集合中元素的索引。

很容易判断一个函数是否返回一个集合或单个元素:

  • getElementBy... – 返回一个元素。
  • getElementsBy... – 返回元素的集合。