[PyQt] QWebkit: saving/caching user input

Andreas Pakulat apaku at gmx.de
Wed Jan 18 08:34:19 GMT 2012


On 17.01.12 18:24:50, James Polk wrote:
> okay, Back at the front,...
> 
> Let's say we use QWebKit to read an HTML file containing a javascript textField...like so:
> 
> <html><body>
> <p>
>     <form name="thisForm">
>         <tr>
>             <td>Name:</td> <td><input type=text name="name" id="nameId" value="John"></td>
>         </tr>
>     </form>
> </body></html>
> 
> When displayed,..the user types "Mary" into the field, replacing "John".
> Then using a method I, uh...derived...from a related web example...
> We want to "capture" the HTML being displayed and save it out to file....
> 
> But,..we need the resulting file to contain the new user input text "Mary"...not John...
> so that on subsequent reloads, the HTML textField will display "Mary",etc...
> 
> Here's the snippet to cache...
> 
>     def DoIt(self):
>         print "Saving..."
> 
>         data = self.webview.page().mainFrame().toHtml()
>         thisFile = "test.html"
>         open(QtCore.QString(thisFile), 'w').write(data)
> 
>         print "Done!"
> 
> However, it saves out "John" instead of "Mary"....
> 
> Can anybody offer any solutions to this ?

File a bugreport with Nokia that they DOM-API is broken.

> And/or offer any other suggestions or workarounds to accomplish same ?

You could try evaluateJavaScript("document.innerHTML") or
evaluateJavaScript("document.body.innerHTML") (the latter will not
include the headers and the body-attributes though) to get the HTML
of the page via JS which apparently always works.

Andreas



More information about the PyQt mailing list