On 01/15/2014 06:03 PM, mauro wrote: > Un caloroso salve a tutti. > > Vorrei chiedere aiuto e forse anche conforto spiriturale circa un problemino > su cui mi sto dissanguando da un po' di giorni. > > ho la necessita' di usare webkit per interagire con un server web dove c'e' > piu' javascript che anima. In giro non mi pare di aver visto prodotti che > possano tirar su una pagina html infarcita di javascript e gestirsela meglio > di webkit. > > il codice, grosso modo deve caricarsi la pagina che gli indico (portandosi > appresso, per l'appunto tutto il codice javascript), lanciare una semplice > chiamata e ritornarmi un valore da usare nel resto dell'applicazione python. > > A parte che non si trova documentazione fatta bene per pywebkit manco > ammazzato. Ho usato tutti i vari esempi trovati in rete, riferimenti sul sito > webkit ufficiale e ricerche a 360 gradi. > > questo il codice: > > > import webkit > > w = webkit.WebView() > w.load_uri('http://192.168.9.1') > w.execute_script('document.title = STR_AJAX_VALUE') > print w.get_main_frame().get_title()
> il problema non e' il come fare.... perche' questo script, eseguito in una > shell, > digitato a manina, riga per riga all'interno dell'interprete python > funziona perfettamente e non sbaglia un colpo. Penso derivi dal fatto che load_uri() non aspetta che la pagina sia caricata / dom inizializzato / tutti gli script eseguiti, mentre quando inserisci i comandi nell'interprete fai una pausa che da' il tempo necessario al caricamento. Giusto per fare una prova, questo dovrebbe funzionare: import time import webkit w = webkit.WebView() w.load_uri('http://192.168.9.1') time.sleep(3) w.execute_script('document.title = STR_AJAX_VALUE') print w.get_main_frame().get_title() Ovviamente non é il metodo piú pulito per fare questa cosa, ma quello sleep di 3 secondi dovrebbe dare tempo agli script della pagina di terminare l'esecuzione; un metodo piú pulito puó essere quello di wrappare il codice javascript in un handler dell'evento "load", in modo da garantire l'esecuzione *dopo* al resto del javascript della pagina, anche se, anche in quel caso, la chiamata é asincrona, quindi devi comunque trovare un modo di "bloccare" fino all'esecuzione del tuo script (penso / spero che esista qualche modo di catturare eventi javascript attraverso l'oggetto WebView, comunque..). -- Samuele ~redShadow~ Santi ---------------------------------------------------------------------- ----( Contact information )---- E-MAIL: redsha...@hackzine.org BLOG: http://www.hackzine.org WIKI: http://wiki.hackzine.org TWITTER: https://twitter.com/_rshk GITHUB: https://github.com/rshk ----( GPG Key: 09F09951 )---- 1AFC FAE5 CA4B 3FB0 F300 FA64 3CB0 1008 09F0 9951 ----( Registered Linux-User: #440008 )---- DEBIAN User since 2004 (I even used Sid!) GENTOO User since 2008-01-01 ---------------------------------------------------------------------- Think about the environment: for each top-posted, badly quoted or bulk e-mail I receive, I'm going to cut down a tree.
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python