Oppure

Loading
07/07/16 21:44
Giu95
Un saluto a tutti voi.

Utilizzo il controllo WebBrowser all'indirizzo: stockpair.com/….

Vorrei automatizzare alcune attività della pagina sopra citata.

Più precisamente, vorrei selezionare un valore dalla listbox della pagina (listbox centrale). La selezione di uno dei valori comporta un cambiamento dei due "form" della pagina (centrale e destro).

Utilizzando lo strumento per ispezionare gli elementi della pagina (strumento di un qualsiasi browser) ho trovato, nella sezione eventi, l'evento change associato all'oggetto SELECT (codice HTML) della listbox della pagina web.

L'oggetto SELECT contiene al suo interno una serie di oggetti OPTION contenenti i valori della listbox.

Attraverso una serie di istruzioni (che posterò a breve) sono riuscito a selezionare la voce di mio interesse.

Dim element As HtmlElement = WebBrowser1.Document.GetElementsByTagName("select").Cast(Of HtmlElement).First(Function(el) el.GetAttribute("classname") = "active gray IHAVEAWIDGET")

element.GetElementsByTagName("option").Cast(Of HtmlElement).First(Function(el) el.InnerText = "Nei prossimi 90 secondi").SetAttribute("selected", True)


Il problema nasce dal fatto che, nonostante il valore selezionato, non avviene alcun cambiamento nella pagina.

Ho cercato su diversi siti/forum una possibile soluzione ma sfortunatamente il problema persiste.

Ho utilizzato l'istruzione:
element.InvokeMember("change")


ma senza alcun risultato.

Posto anche il codice dell'oggetto SELECT della pagina web:
<select class="active gray IHAVEAWIDGET" style="width: 203px;" targetcontainer="#tradingAreaPanel .optionPanelContainer">
      
        <option action="/trading/optionPanel?optionType=18&amp;pairId=111">Nei prossimi 60 secondi</option>
      
        <option action="/trading/optionPanel?optionType=19&amp;pairId=111">Nei prossimi 90 secondi</option>
      
        <option action="/trading/optionPanel?optionType=14&amp;pairId=111">Nei prossimi 5 minuti</option>
      
        <option action="/trading/optionPanel?optionType=17&amp;pairId=111">Nei prossimi 10 minuti</option>
      
        <option action="/trading/optionPanel?optionType=15&amp;pairId=111">Nei prossimi 15 minuti</option>
      
        <option action="/trading/optionPanel?optionType=16&amp;pairId=111">Nei prossimi 30 minuti</option>
      
        <option selected="" action="/trading/optionPanel?optionType=4&amp;pairId=111">Nei prossimi 60 minuti</option>
      
        <option action="/trading/optionPanel?optionType=5&amp;pairId=111">Alla fine della giornata</option>
      
        <option action="/trading/optionPanel?optionType=6&amp;pairId=111">Alla fine della settimana</option>
      
        <option action="/trading/optionPanel?optionType=7&amp;pairId=111">Nei prossimi 14 giorni</option>
      
        <option action="/trading/optionPanel?optionType=9&amp;pairId=111">Nei prossimi 30 giorni</option>
      
        <option action="/trading/optionPanel?optionType=10&amp;pairId=111">Nei prossimi 60 giorni</option>
      
        <option action="/trading/optionPanel?optionType=11&amp;pairId=111">Nei prossimi 90 giorni</option>
      
        <option action="/trading/optionPanel?optionType=13&amp;pairId=111">Nei prossimi 150 giorni</option>
      
    </select>


Mi piacerebbe capire dove sbaglio.

Attendo un vostro riscontro.

Grazie per la pazienza :)
aaa
08/07/16 5:46
torn24
Non sono esperto di reti, ma per fare cambiare la pagina devi comunicare col server e poi ricaricare la pagina nel webbrowser.

Come vedi alla selezione di un opzione "action" viene richiamata una pagina inviando dati a essa.

<option action="/trading/optionPanel?optionType=14&pairId=111">Nei prossimi 5 minuti</option>

se tu vuoi vedere questa "opzione" devi impostare il webbrowser sul URL


"https://www.stockpair.com/trading/optionPanel?optionType=14&pairId=111"





Ma aspetta consigli da chi ne sa di più, forse ti possono fornire una soluzione migliore.
Ultima modifica effettuata da torn24 08/07/16 5:56
aaa
08/07/16 7:21
Giu95
Ciao torn24. Ti ringrazio per la risposta.

Ho già adottato questa soluzione ma il risultato ottenuto non è stato soddisfacente.

Se non ho capito male, mi hai consigliato di provare ad inserire l' URL dell'attributo ACTION come URL del controllo WebBrowser.

Così facendo, effettivamente, il valore che mi interessa viene impostato. Sfortunatamente, però, perdo alcuni oggetti della pagina come, ad esempio, i valori della listbox relativa all'importo che voglio selezionare.

Grazie ancora per la risposta.

Qualche altra idea? :)
Ultima modifica effettuata da Giu95 08/07/16 8:29
aaa
09/07/16 15:22
vankraster
Devi lanciare la seguente riga di codice da javascript
$("div.selectstyle div select.active :nth-child(9)").prop('selected',true).trigger('change');

dove il numero 9 è il numero dell'elemento... fai la prova con Google Console
Fammi sapere se ti serve altro.
aaa
13/07/16 10:48
Giu95
Ciao vankraster. Ti ringrazio per la risposta.

La soluzione che hai postato funziona splendidamente :k:

Grazie ancora.

Problema risolto.

Riporto, di seguito, la soluzione completa:

WebBrowser1.Document.Window.DomWindow.execscript("$('div.selectstyle div select.active :nth-child(9)').prop('selected',true).trigger('change');")


aaa
01/12/16 16:10
Stefanolol10
scusate... mi sono registrato appositamente per questa discussione... potreste rispiegarmi questa cosa però per la pagina di registrazione google?
non ho alcuna intenzione di creare programmi hack (lo dico perchè in precedenti discussioni su altri forum è venuta fuori questa discussine,cosa che mi ha disturbato un pò;), ma ne ho bisogno per un sito che in seguito creerò, però giusto per capire... io provando così non ottengo niente. qualcuno che mi potrebbe spiegare il codice e come riadattarlo? grazie anticipatamente!!
aaa