How to run webpage code with PhantomJS via GhostDriver (selenium)
There is a special way to execute PhantomJS script from GhostDriver, using the next command:
POST /session/id/phantom/execute
It was included in GhostDriver v1.1.0, so it should work since PhantomJS v.1.9.6.
Look at this example:
def execute(script, args): driver.execute('executePhantomScript', {'script': script, 'args' : args })driver = webdriver.PhantomJS('phantomjs')# hack while the python interface lagsdriver.command_executor._commands['executePhantomScript'] = ('POST', '/session/$sessionId/phantom/execute')driver.get('http://stackoverflow.com')# set page format# inside the execution script, webpage is "this"pageFormat = '''this.paperSize = {format: "A4", orientation: "portrait" };'''execute(pageFormat, [])# render current pagerender = '''this.render("test.pdf")'''execute(render, [])
Note that in OS X PhantomJS renders web page as images with not selectable text, due to limitations of Qt rendering engine in OS X (at least with PhantomJS v.1.9.8 and earlier).