12/03/10 14:39
gvigliani
Postato originariamente da GrG:
che codice hai usato? (mostralo, così vedo)
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)
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:44
gvigliani
Postato originariamente da gabryk:
Scusate mi sottoscrivo il thread che interesa anche a me
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)
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
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:
in questo spezzone di codice io comunico al programma che se la stringa inserita in casella è "submit" lancia la riga:
altrimenti utilizza il comando relativo al pulsante:
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
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