htmlagilitypack seleziona elemento e invia modulo

c# html-agility-pack xpath

Domanda

Ho appena iniziato a lavorare con htmlagilitypack e lo sto amando fino ad ora.

Sto provando a selezionare un pulsante di opzione e inviare un modulo usando htmlagility.

Ecco la struttura del sito web:

<form class="picker" action="link.html" method="POST">
    <ul class="selection-list">
        <li>
            <label>
                <span class="left-side">
                    <input name="id" value="t1" type="radio">
                </span>
                <span class="right-side">
                    Test1
                </span>
            </label>
        </li>
        <li>
            <label>
                <span class="left-side">
                    <input name="id" value="t2" type="radio">
                </span>
                <span class="right-side">
                    Test2
                </span>
            </label>
        </li>
        <li>
            <label>
                <span class="left-side">
                    <input name="id" value="t3" type="radio">
                </span>
                <span class="right-side">
                    Test3
                </span>
            </label>
        </li>
    </ul>
</form>

Posso ottenere il modulo. Ecco il codice:

    HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load(urlAddress);

// Get the form
var form = doc.DocumentNode.SelectSingleNode("//form[@class='picker']");

Come posso selezionare, ad esempio, il

  • Test2 e invia il modulo? È possibile utilizzare htmlagilitypack o ho bisogno di un'altra libreria?

    Grazie

  • Risposta popolare

    var uri = // get uri from form;
    var formVariables = new List<KeyValuePair<string, string>>();
    
    // Populate your variables here; HtmlAgilityPack is useful for propagating existing form values
    formVariables.Add(new KeyValuePair<string,string>("id","t2"));
    
    var formContent = new FormUrlEncodedContent(formVariables);
    
    using (var message = new HttpRequestMessage { Method = HttpMethod.Post, RequestUri = uri, Content = formContent })
    {
        // use HttpClient to send the message
        using (var postResponse = await client.SendAsync(message))
        {
            if (postResponse.IsSuccessStatusCode)
            {
                var stringContent = await response.Content.ReadAsStringAsync();
    
                // Do something with string content
            }
        }
    }
    


    Related

    Autorizzato sotto: CC-BY-SA with attribution
    Non affiliato con Stack Overflow
    Autorizzato sotto: CC-BY-SA with attribution
    Non affiliato con Stack Overflow