Gå til innhold

C#: automatisk trykke på en radiobutton i webbrowser?


Anbefalte innlegg

Hei.

 

Jeg er helt ny med programmering, og programmerer i Visual C# 2010

Jeg ønsker og lage en bot som kan fylle ut skjemaer på internett.

Jeg har fått til alt unntatt radioknapper. Jeg klarer ikke å få den til å velge rett knapp.

 

På siden som skal fylles ut er det 8 radioknapper som alle heter det samme, men de har forskjellige "values".

 

Slik er det jeg har prøvd, men programmet crasher når jeg trykker på knappen som skal velge radioknappen.

 

wb1.Document.All.GetElementsByName("navn")[8].SetAttribute("checked", "true");

slik se den koden fra siden hentet med HttpFox.

Parameter:       Value:
navn             8

 

 

Takk for all hjelp ;)

Endret av PuffyTroll
Lenke til kommentar
Videoannonse
Annonse

Ingen som vet??

 

her er htlm koden fra siden jeg vil at programmet skal trykke på knappene:

 

 

</tr>
<tr>
<td class="kn1">   <input  name="age" value="7" type="radio" />
   </td>
<td class="kn1">1 %</td>
</tr>
<tr>
<td class="kn1">   <input  name="age" value="8" type="radio" />
   </td>

<td class="kn1">96 %</td>
</tr>
<tr>
<td colspan="2" class="atd"><input class="kn1" name="utfor" value="Utfør!   " type="submit" /></td>

 

 

Når jeg bruker kommandoen wb1.Document.All.GetElementsByName("age")[8].SetAttribute("checked", "true");

å debugger programmet får jeg en feil:

 

ArgumentOutOfRange Exception was unhandled!

 

Value of '8' is not valid for 'index'. 'index' should be between 0 and 1.

Parameter name: index

 

Takk ;)

Lenke til kommentar

 

Når jeg bruker kommandoen wb1.Document.All.GetElementsByName("age")[8].SetAttribute("checked", "true");

å debugger programmet får jeg en feil:

 

ArgumentOutOfRange Exception was unhandled!

 

Value of '8' is not valid for 'index'. 'index' should be between 0 and 1.

Parameter name: index

 

Takk ;)

 

Problemet ditt er at du forsøker å lese fra index 8. Denne eksisterer ikke.

 

WebBrowser.Document.All gir deg tilgang til WebBrowsers HtmlElementCollection, som er en samling av HtmlElements. GetElementsByName gir deg en HtmlElementCollection som inneholder alle elementer med navnet du gir som input parameter til funksjonen. Jeg antar at grunnen til at du benytter [8] er fordi du skal ha tak i elementet som har value="8", men det kan du altså ikke gjøre på den måten.

 

Under er litt kode som prøver å gjøre det du vil, om det virker aner jeg ikke ettersom jeg ikke har mulighet til å teste det.

 

HtmlElementCollection col = wb1.Document.All.GetElementsByName("age");
foreach (HtmlElement elem in col)
{
   string s = elem.GetAttribute("value");
   if (s == "8")
       elem.SetAttribute("checked", "true");
}

 

Håper det er litt til hjelp hvertfall.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...