How to run webpage code with PhantomJS via GhostDriver (selenium) How to run webpage code with PhantomJS via GhostDriver (selenium) selenium selenium

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).