2010-07-31 16 views
7

Sto costruendo un'applicazione che apre un sito Web nel controllo WebBrowser e quindi inserisce del testo nei campi e quindi fa clic su invia in pochi pulsanti uno dopo l'altro.Automazione del sito web utilizzando C# e WebBrowser

Dai un'occhiata alla codice di muggito ...

 
var doc = webBrowser1.Document.GetElementById("ddlOnBoro"); 
doc.SetAttribute("SelectedIndex", "3"); 
var temp = doc.InvokeMember("change"); 

doc = doc.Document.GetElementById("iddOnstreet_txTextBox"); 
doc.SetAttribute("value", "ASTOR PLACE"); 

var adoc = doc.Document.GetElementById("Button6"); 
var getCrossStreets = adoc.DomElement as mshtml.HTMLInputButtonElement; 
adoc.RaiseEvent("onclick"); 

primo e gli ultimi 3 linee di lavoro buono e anche di mezzo 2 opere bene, ma quando ho RaiseEvent ("onclick") nell'ultima riga di codice, il il valore della casella di testo diventa vuoto prima di essere inviato anche se l'ho impostato nella quinta riga di codice.

Il sito Web è incorporato in ASP.NET e penso che questo sia ViewState con cui sta facendo casino.

Qualche idea?

+0

Perché si scrive tale applicazione? –

+0

Hai considerato qualcosa come Watir? (http://watir.com/) – Graham

risposta

3

http://watin.org/ si basa su Watir e consente il collaudo di unità di siti Web. Può anche essere utilizzato per inserire dati di moduli, raschiare dati da siti Web, ecc. È perfetto per l'uso con C#. Per favore non usarlo per scopi nefandi.

Se sei sul sito Web di IE, la casella di testo verrà cancellata quando fai clic sul pulsante? Se provi a replicare ciò che il tuo programma sta cercando di fare a mano e la stessa cosa non succede, potresti perdere qualcosa. Ad esempio, nelle prime tre righe, si chiama l'evento "change" (che penso sia davvero "onchange") ma non lo si fa per le 2 righe successive. Solo guardandolo, questa è l'unica differenza tra il tuo codice e farlo a mano.

1

Come riferimento, verificare se il popolare registratore di macro del browser iMacros è in grado di gestire questo sito Web. Se sì, allora sai almeno che è fattibile.

+0

Sono venuto a sapere che i campi sono stati ripristinati perché javascript era lì per renderlo tale. Era stato pubblicato da javascript lì. – Neutralizer

2

Si prega di consultare il seguente articolo.

Fornisce un piccolo esempio su come utilizzare il browser web per riempire automaticamente il testo di ricerca in Google. Vorrei iniziare con quello e poi provare a inserire il tuo sito con nomi di campo diversi.

C# Auto click button and auto fill form

Problemi correlati