2013-05-17 90 views
0

嗨,我正在嘗試點擊網站上的一個按鈕用VB.NETVB點擊按鈕的JavaScript/IMG

我.AHK使用的命令是

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

按鈕/圖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 

末級

+0

什麼是您的問題! – Damith

+0

您的'img'標籤沒有任何直接的方法調用。很可能'doSubmit'通過'form'標籤被調用。 – DougM

+0

*基本上有一種方法可以調用這個dosubmit()函數或模擬點擊圖像嗎?*是的,但是關於什麼? – fnostro

回答

0

你沒有說,如果你的VB程序是一個網絡應用程序,控制檯應用程序等,但如果你可以使用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:羅恩tornamb的代碼是更接近原始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 
+0

對不起,對不起,我是新來的。我很好與AHK,但試圖學習VB.net。我目前在Visual Express winforms中執行此操作。它將是一個基於應用程序並從本地計算機運行,該計算機將控制Internet瀏覽器,然後瀏覽該網站。我也會鏈接到該網站,但不幸的是它在本地Intranet – K33k00

+0

你使用Winforms的原因是什麼? –

+0

基本上我按下窗體上的按鈕導航到頁面,然後按下按鈕登錄。顯然這最終可以並且將被濃縮成一個功能。總的來說,我將有幾個按鈕,將做各種事情 – K33k00

0

要在VB.Net進行點擊,你首先需要等待文件加載,然後發出InvokeMember(「點擊」)命令元素如下:

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

這將工作,但因爲它使用索引來查找元素,如果img在稍後的日期被添加到頁面,它可能會打破功能。 –

+0

確實夠不錯,但是你會不會建議找到這個元素,因爲它沒有真正的區別特徵? –

+0

它真正具有的唯一有用的特徵是src,所以我使用了它。它也有高度和寬度,所以他可以使用這些組合來找到它。我想這些可能也會改變,但是IMO比img標籤的索引更不太可能改變。 –