VBA单击IE中没有ID,名称,ClassName的按钮 [英] VBA to click on a button in IE with no ID, Name, ClassName

查看:228
本文介绍了VBA单击IE中没有ID,名称,ClassName的按钮的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在IE中单击一个按钮.我尝试了几种选择,但都没有成功.我尝试的所有内容都使用TagName/ClassName/Name/ID.但是我在下面找不到这些.

I need to click on a button in IE. I tried few options with no success. Everything i tried are using TagName/ ClassName/ Name/ ID. But I don't find any of these in the below.

<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>

我尝试按输入标签进行操作,但不起作用.

I tried going by input tags and it is not working.

我使用了以下代码.它单击了我想要的按钮,但没有考虑我在单击提交"按钮之前给出的值.

I used the below code. It clicks on the button i want but it is not considering the values i gave before clicking on submit button.

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

有人可以帮助我如何单击按钮.

Can some one help me on how to click on the button.

推荐答案

正如@Tim Williams所建议的那样,这应该有效.

As @Tim Williams suggest, this should work document.querySelector("input[value=Search]").

如果仍然没有返回正确的输入元素,则可以根据搜索到的输入所处的DOM树来使选择器更加具体.像这样.

If this still doesn't return the correct input element then the selector can be made more specific according to the DOM tree where the searched input is located, e.g. like this.

' 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

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>



不确定我是否正确理解了您的问题. 要选择INPUT元素,可以使用此选择器:

Not sure if I understand your problem correctly. To select the INPUT element this selector can be used:

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

要设置值属性,可以使用setAttribute()功能.要检查值属性,可以使用getAttribute()函数.

To set the value attribute setAttribute() function can be used. To check value attribute getAttribute() function can be used.

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

这篇关于VBA单击IE中没有ID,名称,ClassName的按钮的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆