Oppure

Loading
12/03/10 7:34
GrG
che codice hai usato? (mostralo, così vedo)
aaa
12/03/10 14:39
gvigliani
Postato originariamente da GrG:

che codice hai usato? (mostralo, così vedo)

Public Sub Prova_sito()
On Error Resume Next
DoEvents
                
                   sito_temp = Database_Account.L_abbonamento(0)
                   
                   indsito_temp = Database_Account.L_abbonamento(1)
                   stringa_login = Database_Account.L_abbonamento(2)
                   priv_login = Database_Account.L_abbonamento(3)
                   stringa_pass = Database_Account.L_abbonamento(5)
                   priv_pass = Database_Account.L_abbonamento(6)
                   stringa_clic = Database_Account.L_abbonamento(7)

                   WebBrowser1.Navigate indsito_temp
                   lbl_info.Caption = "Attesa Caricamento Sito"
                   Do While WebBrowser1.ReadyState <> READYSTATE_COMPLETE
                        DoEvents
                   Loop
                   lbl_info.Caption = "Caricamento pagina effettuato"

                   Call controlla_Frames   ' lancio la funzione di controllo frame

                   J_count = 0   ' imposto un puntatore al form
                   WebBrowser1.Document.Forms(J_count).All(stringa_login).Value = priv_log
                   While Err.number <> 0
                        Err.number = 0
                        J_count = J_count + 1: frm_n.Caption = J_count
                        If J_count > 100 Then 
                            ' se è arrivato a 100 presumo che non ci siano form e quindi faccio in modo che il login avvenga manualmente
                            lbl_info.Caption = "Login Manual"
                            WebBrowser1.Navigate indsito_temp
                            Exit Sub
                        End If

                        WebBrowser1.Document.Forms(J_count).All(stringa_login).Value = priv_login
                   Wend
                   WebBrowser1.Document.Forms(J_count).All(stringa_pass).Value = priv_pass
                   If stringa_clic = "submit" Then
                        WebBrowser1.Document.Forms(J_count).submit
                   Else
                        WebBrowser1.Document.Forms(J_count).All(stringa_clic).Click
                   End If
                   ' se procede per il verso giusto continuo altrimenti faccio il login   manuale
                   If Err.number = 0 Then  ' se è tutto a posto
                        lbl_info.Caption = "Login OK!"
                   Else
                        lbl_info.Caption = "Login Manual"
                        WebBrowser1.Navigate indsito_temp
                   End If

End Sub


Scusa se lo stile non è il massimo ma sono autodidatta.

Ciao
aaa
12/03/10 16:12
GrG
intanto non capisco perchè questa riga:
WebBrowser1.Document.Forms(J_count).All(stringa_login).Value = priv_login
la metti dentro il ciclo... credo la dovresti mettere fuori, no?

comunque prima di questa riga
WebBrowser1.Document.Forms(J_count).All(stringa_pass).Value = priv_pass
metti:
msgbox stringa_pass

stringa_pass deve essere uguale a "pass" (questo per quanto riguarda il sito bet7days)
aaa
15/03/10 17:22
gabryk
Scusate mi sottoscrivo il thread che interesa anche a me :)
aaa
15/03/10 17:44
gvigliani
Postato originariamente da gabryk:

Scusate mi sottoscrivo il thread che interesa anche a me :)


Benvenuto e felice che la cosa possa interessare anche ad altri.
aaa
15/03/10 18:02
gvigliani
Postato originariamente da GrG:

intanto non capisco perchè questa riga:
WebBrowser1.Document.Forms(J_count).All(stringa_login).Value = priv_login
la metti dentro il ciclo... credo la dovresti mettere fuori, no?

Questa prima riga la lancio per verificare che il form sia il N 0 , se non lo è mi viene ritornato un errore ed a quel punto inizio il ciclo che partendo da 1 va alla ricerca del form giusto. prova fino al form N 100. Se si arriva alla fine probabilmente il dato che sto cercando non è in un form ed esce proponendo il Manual Login

comunque prima di questa riga
WebBrowser1.Document.Forms(J_count).All(stringa_pass).Value = priv_pass
metti:
msgbox stringa_pass

A questa riga ci si arriva dopo che è stato verificato che il dato è in un N di form e solo allora lancia il comando. Tutte le verifiche, anche se non presenti nel listato inviato sono state effettuate ed i dati inviati sono quelli prefissati. Io utilizzo il piu' flessibile Debug.print al posto del Msgbox


stringa_pass deve essere uguale a "pass" (questo per quanto riguarda il sito bet7days)

Lo è. I dati relativi ai nomi delle caselle che devono contenere i dati da inviare li ho presi dal programma Roboform o più artigianalmente con i sorgenti HTML


Comunque , ho potuto notare che nonostante faccia una ricerca dei form (con esito negativo), quella relativa ai frames mi da' 0.
Non si tratta alla fine di moltissimi siti ma è il fatto di non riuscire a capire il motivo.
Un altro problema è la presenza di CAPCHKA che non è possibile ( almeno credo ) bypassare.

Saluti

Gaspare
aaa
15/03/10 19:05
GrG
allora per i captcha dovresti analizzare l'immagine e ricavarti il testo... cosa quasi impossibile

poi per il resto non saprei... se hai controllato che il valore è: pass ... boh, prova ad allegare il progetto al prossimo post, così provo in prima persona e forse capisco meglio
aaa
22/03/10 17:54
gvigliani
Caro GrG,
sei sempre molto disponibile e questo, purtroppo per te, non fa che renderti oggetto delle mie domande.
Ho notato nel mio programma che molte volte, il login non ha effetto perche' il lancio dei comandi è troppo veloce:
             
                   If stringa_clic = "submit" Then
                        WebBrowser1.Document.Forms(J_count).submit
                   Else
                        WebBrowser1.Document.Forms(J_count).All(stringa_clic).Click
                   End If


in questo spezzone di codice io comunico al programma che se la stringa inserita in casella è "submit" lancia la riga:

WebBrowser1.Document.Forms(J_count).submit


altrimenti utilizza il comando relativo al pulsante:

WebBrowser1.Document.Forms(J_count).All(stringa_clic).Click


Il programma se viene effettuato in modo normale non funziona ma , se lo faccio andare riga per riga effettua il login in modo perfetto.

Presumo che si tratti del fatto che il comando non ha il tempo di essere effettuato e che quindi passando alla riga successiva che va a caricarmi la homepage del sito, salti il login.

Esiste un qualche modo o una qualche Api che dia la possibilita' di controllare che un comando sia concluso prima di pasare al successivo?

Grazie

Gaspare

aaa