2015-01-07 41 views
0

我试图插入数据到搜索字段,然后单击搜索按钮。我试过getElementsByid("SiteSearchForm_SearchBtn")(0).ClickgetElementsByclassname("searchBtn")(0).Click网站上的搜索按钮将不会单击VBA

HTML

<div class="searchBtn"><a href="#search" id="SiteSearchForm_SearchBtn">Search</a></div> 

VBA代码

With IE 
     .Visible = True 
     .Navigate URL_1 
     Do Until .ReadyState = 4 
     DoEvents 
     Loop 

     Application.Wait (Now + TimeValue("0:00:02")) 
      IE.Document.getelementsbyclassname("hint hint-search")(0).Value = "Eliroyal2$" 
      IE.Document.getElementsByid("SiteSearchForm_SearchBtn")(0).submit 

     Application.Wait (Now + TimeValue("0:00:10")) 

End With 
+0

将0放在方括号中,并按类别尝试获取元素。“(”hint hint_search“)[0]'并且第四次编辑的元素不为零。 getElementById并创建I资本 – Billy

回答

0

不具有URL,我会说,之所以这行代码不能工作:

IE.Document.getElementsByid("SiteSearchForm_SearchBtn")(0).submit 

是双重的编辑。

1)这是getElementById,而不是Elements;

2)该函数返回一个单一的元素,所以你并不需要访问一个集合与(0)

如果你确信你的ID,只是尝试:

IE.Document.getElementByid("SiteSearchForm_SearchBtn").Click 

。另外,请向我们提供我们解决问题的网址。

编辑

根据您所提供的HTML行,你不能仅仅因为你得到的元素是<div>元素,它不支持Click事件获得通过类名的元素。 默认情况下,div没有属性cursor:pointer,因为它被认为是“容器”。该链接(即<a>)默认为可点击的元素,将您重定向到href地址(您想要去的地方)。

至于设置搜索字段值的行,相反,它似乎很好。但是你确定你不能通过一个独特的财产(如id)来避免改变网站的CSS命名可能会变成未来的代码崩溃吗?