Autor Beitrag
Lihlu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 53



BeitragVerfasst: Mi 29.07.15 16:05 
Hallo ich bin gerade dabei ein Programm zu schreiben, was mich automatisch auf die Weboberfäche einens Lancoms AccesPoints einloggt.

Soweit klappt es das er den Login namen und das Passwort einträgt.

Nur den Button kann mein Programm nicht drücken :( Da ich im quellcode kein "name" für den button finde.

ausblenden HTML-Dokument
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
</div>
<div class="logincontent">
<div class="login">
 <h1> Lancom-WLC1 </h1>
<div id="leftDiv">
<img style="border:0" src="/images/prodimg.jpeg" alt=" LANCOM WLC-4025+">
</div>
<div id="rightDiv">
 <form method="POST" action="/?JavaScriptDisabled" name="loginform" onsubmit="replaceParam()">
   <table border="0" cellpadding="3" cellspacing="0" class="centeredTable">
     <tr>
       <td align="left"> Login</td>
       <td>  <input type="text" name="loginname"  class="Feld" size="30" maxlength="16"></td>
     </tr>
     <tr>
       <td align="left"> Passwort</td>
       <td>  <input name="passwort" type="password" class="Feld" size="30" maxlength="16"> </td>
     </tr>
     <tr>
       <td></td><td><button TYPE="submit"class="Button" accesskey="o" ><span style="text-decoration:underline">O</span>k</button>
       </td>
     </tr>
   </table>
 </form>
<script type="text/javascript">
  document.forms[0].elements[0].focus();
</script>


Mein C# Code:
ausblenden C#-Quelltext
1:
2:
3:
webBrowser1.Document.GetElementById("loginname").InnerText =textBox1.Text.ToString();
webBrowser1.Document.GetElementById("passwort").InnerText = textBox2.Text.ToString();
webBrowser1.Document.GetElementById("KEINE AHNUNG").InvokeMember("click");


Der Buton hat keine ID oder ähnliches ...
Wie kann ich möglichst simple diesen button drücken o: ?

Vielen lieben dank
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 29.07.15 19:07 
Du könntest mal eine der anderen Methoden der HtmlDocument-Klasse benutzen, z.B. GetElementsByTagName (d.h. mit "button" als Parameter).

Alternativ über die Eigenschaft Forms den Button suchen (bzw. dessen InvokeMember-Methode aufrufen).

PS: Text ist schon ein string, daher reicht textBox1.Text

Für diesen Beitrag haben gedankt: Lihlu
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 29.07.15 19:27 
Du brauchst nicht den Button sondern die form und dort kannst du dann den submit auslösen.

ausblenden C#-Quelltext
1:
webBrowser1.Document.GetElementById("loginform").InvokeMember("submit");					

Für diesen Beitrag haben gedankt: Lihlu
Lihlu Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 53



BeitragVerfasst: Do 30.07.15 08:14 
Super ! Danke euch beiden! Das klappt einwandfrei =)

Vielen Dank und einen angenehmen Tag :p
Lihlu Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 53



BeitragVerfasst: Mo 08.08.16 09:45 
Hallo zusammen,

ich öffne dieses Thema noch einmal da es sich auf das gleiche bezieht.

Ich habe den Lancom AccessPoint geupdated. Nun hat dieser aber leider SSL. Wie ich die Meldungen ignoriere habe ich bereits erfolgreich gelöst.

Leider nimmt mein Programm aber nun den "Submit" Button nicht mehr an. Für mich als Laie hat sich aber im HTML Quelltext vom "Submit" namen her nichts geändert.
(Wenn ich mit der Maus im WebBrowser clicke klappt auch alles)

Als erstes noch mal der HTML Code:
ausblenden volle Höhe HTML-Dokument
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
<html><head>
<link rel="shortcut icon" href="/images/favicon.ico" type="image/x-icon">
<title>Lancom-WLC1 - Login</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<script type="text/javascript">
function replaceParam(){
  var newParam = "Enabled";
  document.loginform.action = document.loginform.action.replace(/Disabled$/,newParam);
}

</script>

<link rel="stylesheet" type="text/css" href="/css/login.css">
    </head><body><div class="header">
<p class="headerp">LANCOM WLC-4025+</p>
</div>
<div class="logincontent">
<div class="login">
 <h1> Lancom-WLC1 </h1>
<div id="leftDiv">
<img style="border:0" src="/images/prodimg.jpeg" alt=" LANCOM WLC-4025+">
</div>
<div id="rightDiv">
 <form method="POST" action="/?JavaScriptDisabled" name="loginform" onsubmit="replaceParam();calculatehashthensubmit();">
   <table border="0" cellpadding="3" cellspacing="0" class="centeredTable">
     <tbody><tr>
       <td align="left"> Login</td>
       <td>  <input type="text" name="loginname" class="Feld" size="30" maxlength="16" data-cip-id="cIPJQ342845639" autocomplete="off"></td>
     </tr>
     <tr>
       <td align="left"> Passwort</td>
       <td>  <input name="passwort" type="password" class="Feld" size="30" maxlength="40" data-cip-id="cIPJQ342845640"> </td>
       <td>  <input name="challenge" type="hidden" value="5273a1ac2f533cecd643928cc7fc981f259947abc2082628965f2bc7a3919982"> </td>
       <td>  <input name="hashpasswort" type="hidden" value=""> </td>
     </tr>
     <tr>
       <td></td><td><button type="submit" class="Button" accesskey="o"><span style="text-decoration:underline">O</span>k</button>
       </td>
     </tr>
   </tbody></table>
 </form>
<script type="text/javascript">
  document.forms[0].elements[0].focus();
</script>

<noscript>
<span style="color:red"><p>Ein Webbrowser mit aktiver <a href="http://wikipedia.org/wiki/JavaScript">JavaScript</a> Unterst&uuml;tzung ist Voraussetzung.</p></span>
</noscript>
<a href="https://IP-Adresse">Verschlüsselte Verbindung.</a>
</div>
<div style="clear:both"></div></div>
<script type="text/javascript" charset="utf-8" src="/js/sjcl.js"></script>
<script type="text/javascript" charset="utf-8">
function hexStringToBytes(hex){
for (var bytes=[],c=0;c<hex.length;c+=2)
  bytes.push(parseInt(hex.substr(c,2),16));
return bytes;}
function calculatehashthensubmit(){
  var pwd = document.getElementsByName("challenge")[0].value + document.getElementsByName("passwort")[0].value;
  var bitArray = sjcl.hash.sha256.hash(pwd);
document.getElementsByName("hashpasswort")[0].value = sjcl.codec.hex.fromBits(bitArray);
document.getElementsByName("passwort")[0].disable = true;
document.getElementsByName("challenge")[0].disable = true;
return true;}
</script>
    </div>
</body></html>


und noch mal mein C# Submit Code.
Habe es mit diesen 3 versucht:

ausblenden C#-Quelltext
1:
2:
3:
4:
 
//webBrowser1.Document.GetElementsByTagName("submit").GetElementsByName("button")[0].Focus();
                    //webBrowser1.Document.GetElementById("submit").InvokeMember("click");
                   // webBrowser1.Document.GetElementById("loginform").InvokeMember("submit");


Wisst ihr warum der automatische Login nicht mehr klappt ?

Vielen Dank

EDIT:

Ich sehe gerade das ich bei:

ausblenden C#-Quelltext
1:
webBrowser1.Document.GetElementById("loginform").InvokeMember("submit");					


Diese Meldung bekomme:
Sie haben entweder kein, ein ungültiges Passwort eingegeben oder die Challenge ist abgelaufen

Wie gesagt, wenn ich manuell den "OK" Button drücke kann ich mich ein loggen und er erstellt das Ticket. Also scheint es das ich ein paar Werte nicht mit gebe. Kann das sein ?