2016-12-02 335 views
3

我需要点击IE中的按钮。我尝试了几个没有成功的选择。我所尝试的一切都是使用TagName/ClassName/Name/ID。但我在下面没有找到这些。VBA点击IE中没有ID的按钮,名称,类名

<FORM method=post name=frmSearch action=searchResultsSummary> 
<INPUT type=hidden value=GMT+01:00 name=clitz> 
<DIV style="MARGIN-LEFT: 30px"> 
<DIV style="MARGIN-BOTTOM: 10px; FONT-WEIGHT: bold">Common Criteria</DIV> 
<TABLE style="MARGIN-LEFT: 20px" cellSpacing=5 cellPadding=0 border=0> 
<TBODY> 
<TR> 
<TD id=oDocumentCategoryCell style="HEIGHT: 22px" colSpan=3 noWrap>Document category:</TD> 
<TD colSpan=3 align=left> 
<SELECT style="DISPLAY: block" name=docCategory old_value="2"> 
<OPTION value=%>Any Category</OPTION> 
<OPTION value=FINANCE>Finance Document</OPTION> 
<OPTION selected value=INBOUND>Inbound Document</OPTION> 
<OPTION value=PROCESS>Internal Process</OPTION> 
<OPTION value=OUTBOUND>Outbound Document</OPTION> 
</SELECT> 
</TD> 
<TD style="WIDTH: 15px"></TD> 
<TD> 
<INPUT onclick="javascript:if (!validateSearchForm()) return;if (!checkCountOfDays()) return; addRefKeysToForm(frmSearch); frmSearch.submit();" style="WIDTH: 100px" type=button value=Search> 
</TD></TR> 
<TR> 
<TD style="HEIGHT: 22px" colSpan=3 noWrap>Document type:</TD> 
<TD colSpan=3 align=left> 
<SELECT style="DISPLAY: block" name=docType old_value="0"> 
<OPTION selected value=%>Any Type</OPTION> 
<OPTION value=CSN_ORD_VALID>CSN Order Validation</OPTION> 
<OPTION value=CREDIT_ORD>Credit Order</OPTION> 
<OPTION value=EOI_ORDCPY>EOI Order Copy</OPTION> 
<OPTION value=LEASE_ORD>Lease Order</OPTION> 
<OPTION value=ORDER_REPORT>Order Load Report</OPTION> 
<OPTION value=TRADE_ORD>Trade Order</OPTION> 
<OPTION value=WATSON>WATSON Quote</OPTION> 
<OPTION value=WATSON_UPDATE>WATSON Update Quote</OPTION> 
<OPTION value=WNGQ>WNGQ Request</OPTION></SELECT> </TD></TR> 
<TR> 

我试图通过输入标签去和它不工作。

我用下面的代码。它点击我想要的按钮,但它没有考虑我点击提交按钮之前给出的值。

Dim btnInput As MSHTML.HTMLInputElement 
Dim frm As MSHTML.IHTMLElementCollection 
Application.ScreenUpdating = True 

Set frm = ie.Document.getElementsByName("frmSearch") 
For Each btnInput In frm 

If btnInput.Value = "frmSearch.submit()" Then 
    btnInput.submit 
    Exit For 
End If 
Next btnInput 

有人可以帮助我如何点击按钮。

+1

的getElementsByTagName( “INPUT”)(0) –

+0

@Nathan_Sav感谢您的答复...但我想这已经。我的IE浏览器中有太多按钮,而且这个输入不起作用。 – Sara

+0

您需要将(0)更改为当时的任何一个。 (1)(2)...(n) –

回答

2

正如@Tim Williams所说,这应该可以工作document.querySelector("input[value=Search]")

如果仍然没有返回正确的输入元素,则可以根据搜索到的输入所在的DOM树使选择器更具体,例如,喜欢这个。

' Add reference to Microsoft Internet Controls (SHDocVw) 
' Add reference to Microsoft HTML Object Library 

Dim inputElement As HTMLInputElement 
Set inputElement = doc.querySelector(_ 
    "div[class=main] div[id=inner] table input[type=button][value=Search]") 

If Not inputElement Is Nothing Then 
    inputElement.Click 
End If 

HTML

<div class="main"> 
    <div id="inner"> 
     <table> 
      <tbody> 
       <tr> 
        <td> 
         <INPUT onclick="alert('This is the corect one');" 
          style="WIDTH: 100px" 
          type=button 
          value=Search> 
        </td> 
       </tr> 
      </tbody> 
     </table> 
    </div> 
</div> 
<INPUT onclick="alert('No this is not the searched one');" 
    style="WIDTH: 100px" 
    type=button 
    value=Search> 

编辑:

不知道如果我正确地理解您的问题。 选择输入元素此选择器可用于:

Set inputElement = doc.querySelector(_ 
    "form[name=frmSearch] table tbody tr td input[type=button][value=Search]") 

要设置的值属性可以用来setAttribute()功能。检查值属性getAttribute()功能可以使用。

If Not inputElement Is Nothing Then 
    inputElement.setAttribute "value", "some-new-value" 
    If inputElement.getAttribute("value") = "some-new-value" Then 
     inputElement.Click 
    End If 
End If 
+0

@Sara你可以发布大部分的网站吗?所以我们可以看到INPUT在DOM树中的位置。你能更准确地描述这个问题吗?只有我们迄今为止的信息是'它不工作'。 – dee

+0

我已经编辑过我的帖子了。希望这可以帮助 – Sara