0

こんにちは、VB.NET を使用して Web サイトのボタンをクリックしようとしています。

.AHK で使用するコマンドは

Pwb.document.getElementsByTagName("IMG")[7].click

ボタン/Img HTML は以下のとおりです。

<img width="34" height="34" style="cursor: pointer;" onclick="doSubmit()" alt="" src="../../images/SC5Login07.jpg" border="0" complete="complete"/>

クリックすると、JavaScriptが実行されていることに気付きました。それが下です

function doSubmit() {
            //Submit the form
            if (document.getElementById("txtDBName").value == "") {
            //Login security modifications - End
                alert('You must select a Database');
            }
            else {
                if (document.getElementById("txtUserName").value == "") {
                    alert('Please enter your Tesseract user id and password');
                }
                else {
                //Set txtformEvent
                    document.getElementById("txtFormEvent").value = "onSubmit";
                    //Submit the form
                    document.getElementById("frmLoginLaunch").submit();
                }
            }                   
        }

今、私は GetElementById があることを認識していますが、ID がないためにそれを機能させることができません。AHK と同じくらい簡単だと思っていましたが、そうではないようです。

基本的に、この dosubmit() 関数を呼び出す方法や、画像のクリックをシミュレートする方法はありますか?

誰かが助けてくれることを願っていますありがとう

ありがとう、これが私のログインコードです

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    WebBrowser1.Navigate("http://caan/SC5/SC_Login/aspx/login_launch.aspx?SOURCE=ESOLBRANCHLIVE")

    While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
        Application.DoEvents()
    End While

    WebBrowser1.Document.GetElementById("txtUserName").SetAttribute("value", "kieranw")
    WebBrowser1.Document.GetElementById("txtPassword").SetAttribute("value", "kieranw")

    Dim allImgTags As HtmlElementCollection = WebBrowser1.Document.GetElementsByTagName("img")
    If allImgTags IsNot Nothing Then
        For Each img As HtmlElement In allImgTags
            If img.GetAttribute("src").Contains("/images/SC5Login07.jpg") Then
                img.InvokeMember("Click")
                Exit For
            End If
        Next img
    End If

End Sub

クラス終了

4

2 に答える 2

0

VB.Net でクリックを実行するには、まずドキュメントが読み込まれるのを待ってから、次のように要素に対して InvokeMember("click") コマンドを発行する必要があります。

Private Sub Pwb_DocumentCompleted(sender As Object, e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles Pwb.DocumentCompleted
    Dim elem As HtmlElement = Pwb.Document.GetElementsByTagName("IMG")(7)
    elem.InvokeMember("click")
End Sub
于 2013-05-17T17:08:10.773 に答える
0

VB プログラムが Web アプリ、コンソール アプリなどであるかどうかはわかりませんでしたが、jQuery を使用できる場合は、次のことができます。

$("img[src$='SC5Login07.jpg']").trigger('click');

また:

$("img[src$='SC5Login07.jpg']").click();

編集:Winformsを使用しているようです(これは、この種のものには最適な選択ではありません.IMO)。その場合は、次のようにしてみてください。

Dim browser As New WebBrowser
browser.Navigate("your_intranet_url")

While browser.ReadyState <> WebBrowserReadyState.Complete
  Application.DoEvents()
End While

Dim allImgTags As HtmlElementCollection = browser.Document.GetElementsByTagName("img")
If allImgTags IsNot Nothing Then
  For Each img As HtmlElement In allImgTags
    If img.GetAttribute("src").Contains("/images/SC5Login07.jpg") Then
      img.InvokeMember("Click")
      Exit For
    End If
  Next img
End If

編集 #2: ron tornab のコードは元の AHK コードに近いため、インデックスで img を検索する場合は、次を使用します。

Dim browser As New WebBrowser
browser.Navigate("your_intranet_url")

While browser.ReadyState <> WebBrowserReadyState.Complete
  Application.DoEvents()
End While

Dim img As HtmlElement = browser.Document.GetElementsByTagName("img")(7)
If im IsNot Nothing Then
    img.InvokeMember("Click")
    End If
End If
于 2013-05-17T15:16:55.510 に答える