2016-07-12 4 views
1

Ich möchte Code über VBA schreiben, um sich automatisch auf einer Website anzumelden.Wie kann ich auf das Login-Bild ohne ID oder Name in der Website klicken?

Und der Login "Button" ist eigentlich ein "Login Image", ohne ID oder Name. Ich weiß nicht, wie VBA einen "linken Mausklick" auf das "Login Image" machen soll.

Addtionally, bemerkte ich, wenn ich die Maus auf das „Login Bild“ bewegen, die linke untere Ecke angezeigt: \smcvdol\logon

kann diese Hilfe ... Ich weiß nicht, über Sie Javascript in allen

hier ist es:

<TD align=right width="20%" height="21"><input type="image" src="../img/DL.jpg" width="63" height="22" border="0" onClick="javascript:submitform();" style="cursor: pointer;"></TD> 

und hier ist die SubmitForm():

<script> 
function submitform(){ 
if(FRM.authId.value==''){ 
alert("please enter user name!"); 
FRM.authId.focus(); 
return false; 
}else{ 
FRM.submit(); 
} 
} 
function reset_text(){ 
document.getElementById('username').focus(); 

} 
</script> 

Hier ist mein Code, noch den letzten Schritt fehlt: ('### die Seite aus unserer Firma ### unaccessible ist)

Sub macro1() 

Dim ie As Object 

Set ie = CreateObject("InternetExplorer.Application") 
ie.Visible = True 
ie.navigate "http://10.90.15.247/smcvDolWeb/jsp/login.htm" 

While ie.busy Or ie.readystate <> 4 
Wend 

ie.Document.getElementById("username").Value = "admin" 
ie.Document.getElementById("password").Value = "1234" 


End Sub 

Jede mögliche Hilfe geschätzt wird.

+0

ich die anderen Fragen suchen haben, die im Zusammenhang mit mir scheint, aber immer noch da verwirrt etwas anders sind. Ich sah auf Antwort verwiesen auf "FireEvent (" click ")", aber das funktioniert immer noch nicht. – grantpanda

+0

Holen Sie das Objekt nach Typ getElementsByTagName –

+0

Versuchen Sie FireEvent ("Click") können Sie das Formular verweisen und senden, das ist alles JS-Skript tut, wenn Sie die Werte hinzufügen, nicht zu validieren, rufen Sie einfach Form.Submit () der else Teil –

Antwort

0

Das wird also jedes TD-Element auf der Seite durchlaufen. sobald es einen mit der gleichen src trifft, wird es darauf klicken.

Wenn Sie dies nicht jedes Mal tun möchten und die Webseite sich nicht viel ändert, können Sie einfach debuggen.print the cnt und ie.document.all.tags ("td"). Item (cnt) .click

Lassen Sie mich wissen, ob das funktioniert.

      Dim Cnt   As Variant 
         Dim oCell  As Object 
           Cnt = 0 ' 
           With ie.Document.all 
            For Each oCell In .tags("td") 
             If oCell.src = "../img/DL.jpg" Then 
              ocell.click 
              ocell.fireevent("submit") 'aircode, might have to be moved. 
              Exit For 
             End If 
             Cnt = Cnt + 1 
             Next oCell 
            End With 

auch, wäre es wahrscheinlich ein wenig schneller arbeiten, wenn Sie „td“ mit „Bild“

ersetzt

Die Javascript Sie laufen müssen wird .fireevent werden („Eintragen“) oder vielleicht sogar Onchange.

+0

Woh! es ist ein Tag ("td")? Ich habe es TagName als "Eingabe" den ganzen Weg betrachtet. (Die Seite wird sich niemals ändern, auch nicht irgendwann fällt die GreatFrieWall.) – grantpanda

+0

Hat es funktioniert? Ich hoffe es hat funktioniert, schmeißt mich und Upvote wenn es funktioniert hat. Neu auf der Website und versuchen zu übernehmen. Aber im Ernst, diese Schleife hat mir geholfen, so viele verrückte versteckte kleine Elemente auf Seiten zu isolieren. Früher hatte ich einen einzigen Zweck, Debugging durchzuführen. Attribute jedes markierten Artikels auf der Seite zu drucken. Es ist ein Lebensretter. – BigElittles

+0

Bereits uplooted ~ aber kann öffentlich gesehen werden, wie mein Ruf nicht genug ist. Ich muss es morgen im Büro versuchen. thx – grantpanda

0

das Objekt nach Typ getElementsByTagName Erhalten und dann die Schleife für die richtige

+0

thx ... 'IE.Document.getElementsByTagName ("Eingabe") (3) .click' Ich habe das versucht Aber es ging falsch Warnung "Das Element hat keine solche Methode". – grantpanda

+0

Sind Sie sicher, dass es die richtige ist? Vermutlich (1) ist der Start-Benutzername, (2) ist Passwort. Wie viele Elemente sind in IE.Document.getElementsByTagName ("Eingabe") ' –

+0

Oh..ich verstehe. Es ist das vierte Element mit "Eingabe". Ich zählte von 0 auf C-Art. – grantpanda

Verwandte Themen