Análisis de acciones de formulario y nombre y valores de entrada usando el paquete de agilidad html

c# forms html-agility-pack

Pregunta

Estoy tratando de analizar el valor de acción de formulario y el nombre de entrada con el valor del siguiente código HTML:

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

El formulario anterior contiene, tipo de entrada en hijos directos y junto a hijos de niños. Mientras utiliza el ejemplo aquí: https://stackoverflow.com/a/9890022/1007447 el rastreo de código en c # no encuentra elementos o Descendientes para el nombre "formulario".

¿Cómo obtener la acción de formulario y todos los tipos de entrada con valor? (A veces, también necesito omitir la parte de la contraseña del nombre de usuario)

Respuesta popular

Esto se ha discutido varias veces aquí en Stack Overflow.

La respuesta está en la misma pregunta a la que se refiere. Tu tienes que hacer:

HtmlNode.ElementsFlags.Remove("form");

var doc = ... //Load the document here

var nodes = doc.DocumentNode.SelectNodes("//form//input");

La clave está en la línea

HtmlNode.ElementsFlags.Remove("form")

y la explicación de por qué necesita agregarlo se puede encontrar en las siguientes páginas:



Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow