Ich versuche, den Formularaktionswert und den Eingabe-Namen mit dem Wert aus dem folgenden HTML-Code zu analysieren:
<form method="post" action="actionURL" autocomplete="" name="login_form" id="login_form" onsubmit="return hash2(this)">
<input type="hidden" name=".tries" value="1">
<input type="hidden" name=".src" value="ym">
<input type="hidden" name=".md5" value="">
<input type="hidden" name=".hash" value="">
<input type="hidden" name=".js" value="">
<input type="hidden" name=".last" value="">
<input type="hidden" name="promo" value="">
<input type="hidden" name=".intl" value="us">
<input type="hidden" name=".lang" value="en">
<input type="hidden" name=".bypass" value="">
<input type="hidden" name=".partner" value="">
<input type="hidden" name=".u" value="8013sg1858dp9">
<input type="hidden" name=".v" value="0">
<input type="hidden" name=".challenge" value="fUhehaaMq9c2lQjndCps_rNu1eSB">
<input type="hidden" name=".yplus" value="">
<input type="hidden" name=".emailCode" value="">
<input type="hidden" name="pkg" value="">
<input type="hidden" name="stepid" value="">
<input type="hidden" name=".ev" value="">
<input type="hidden" name="hasMsgr" value="0">
<input type="hidden" name=".chkP" value="Y">
<input type="hidden" name=".done" value="somevalue">
<input type="hidden" name=".pd" value="ym_ver=0&c=&ivt=&sg=">
<input type="hidden" name=".ws" id=".ws" value="0">
<input type="hidden" name=".cp" id=".cp" value="0">
<input type="hidden" name="nr" value="0">
<input type="hidden" name="pad" id="pad" value="5">
<input type="hidden" name="aad" id="aad" value="5">
<div id='inputs'>
<label for='username'>Yahoo! ID</label>
<input name='login' id='username' maxlength='96' tabindex='1' value=''>
<p id='ex'>(e.g. test)</p>
<label for='passwd'>Password</label>
<input name='passwd' id='passwd' type='password' maxlength='64' tabindex='2'>
<div id="captchaDiv"></div>
</div>
<div id='fun'></div>
<div id='persistency'>
<input type='checkbox' name='.persistent' id='persistent' tabindex='4' value='y' >
<p>
<label for='persistent'>Keep me signed in</label>
<br>
<span id='uncheck'>(Uncheck if on a shared computer)</span>
</p>
</div>
<div id='submit'>
<button type='submit' id='.save' name='.save' class='secondaryCta' tabindex='5'>
Sign In
</button> </div>
</form>
Das obige Formular enthält, Eingabe-Typ in direkte Kinder und neben Kindern von Kindern. Bei der Verwendung von Beispiel hier: https://stackoverflow.com/a/9890022/1007447 Code-Trace auf c # findet keine Elemente oder Nachfolger für den Namen "Form".
Wie erhalten Sie die Formularaktion und alle Eingabetypen mit Wert? (Manchmal muss ich auch den Benutzernamen Passwort Teil überspringen)
Dies wurde einige Male hier auf Stack Overflow besprochen.
Die Antwort ist in der gleichen Frage, auf die Sie sich beziehen. Du musst:
HtmlNode.ElementsFlags.Remove("form");
var doc = ... //Load the document here
var nodes = doc.DocumentNode.SelectNodes("//form//input");
Der Schlüssel ist in der Leitung
HtmlNode.ElementsFlags.Remove("form")
und die Erklärung, warum Sie es hinzufügen müssen, finden Sie auf den folgenden Seiten: