Вызовите Javascript напрямую для кнопки «клик» - PullRequest
0 голосов
/ 21 сентября 2019

мне нужно нажать на кнопку, где у него нет идентификатора, назвать его href в javascipt, я могу найти элемент, но он не отвечает на щелчок (полагал, что это произошло из-за его вызова javascript и делаетне имеет атрибута onclick)

вот соответствующий код

<tr valign="bottom">
<td colspan="5">
<table>
<tbody><tr>
<td class="butspace"></td>
<td class="butspace"></td>
<td class="butspace"></td>
<td class="butspace"></td>
<td class="butspace"></td>
<td class="butspace"></td>
<td class="butspace"></td>

<td class="butspace"></td>
<td class="appbut"><a href="javascript:callLookup();">Party Search</a></td>
</tr>
<tr>
<td class="appbut"><a href="javascript:callCancel()">Cancel</a></td>
<td class="butspace"></td>
<td class="appbut"><a href="javascript:callSearch();">Search</a></td>
<td></td>
<td></td>
</tr>
</tbody></table>
</td>
</tr>

функция, которую я пытался вызвать здесь - это javascript: callSearch

пробовал, и на самом деле ничего из этого не работаетя понятия не имею, что это за сценарий Java или функция сценария java

Попробуйте 1

for each a in b
if a.href = "javascript:callSearch" then
a.click
end if
next b

Попробуйте 2

Call CurrentWindow.execScript("javascript:callSearch")

Попробуйте 3

Call CurrentWindow.execScript("javascript:callSearch","javascript")

Попробуйте 4

call objIE.parentWindow.execScript("javascript:callSearch")

Попробуйте 5

call objIE.parentWindow.execScript("javascript:callSearch","javascript")

1 Ответ

0 голосов
/ 23 сентября 2019

Попробуйте использовать следующий код, кажется, что когда мы нажимаем ссылку, она запускает функцию JavaScript:

Sub Main()
    'we define the essential variables

    Dim IE As Object, Data As Object
    Dim ticket As String


    Set IE = CreateObject("InternetExplorer.Application")

    With IE
        .Visible = True
        .navigate ("<the website url>")

        While IE.ReadyState <> 4
            DoEvents
        Wend

        Set Data = IE.Document.getElementsByClassName("appbut")

        Debug.Print Data.Length

        If Len(Data) > 0 Then
            For Each ee In Data

                Set link = ee.getElementsbyTagName("a")(0)
                ' it is better to check whether we could find the a tag.
                'check whether we could get the innertext.
                Debug.Print link.InnerText

                If link.InnerText Like "Cancel" Then

                    'click the link.
                    link.Click

                End If
            Next ee

        End If
    End With
    Set IE = Nothing
End Sub

Код на веб-странице:

<script>
    function callLookup() {
        alert("Party Search");
    };
    function callCancel() {
        alert("Cancel");
    };
    function callSearch() {
        alert("Search");
    }
</script>
<table  >
    <tr valign="bottom">
        <td colspan="5">
            <table  >
                <tbody>
                    <tr>
                        <td class="butspace"></td>
                        <td class="butspace"></td>
                        <td class="butspace"></td>
                        <td class="butspace"></td>
                        <td class="butspace"></td>
                        <td class="butspace"></td>
                        <td class="butspace"></td>

                        <td class="butspace"></td>
                        <td class="appbut"><a href="javascript:callLookup();">Party Search</a></td>
                    </tr>
                    <tr>
                        <td class="appbut"><a href="javascript:callCancel()">Cancel</a></td>
                        <td class="butspace"></td>
                        <td class="appbut"><a href="javascript:callSearch();">Search</a></td>
                        <td></td>
                        <td></td>
                    </tr>
                </tbody>
            </table>
        </td>
    </tr>

</table>

Результат как это .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...