Wednesday, November 23, 2011: PhantomJS - Passing Variables to page.evaluate
When I was making an auto form submission script, I tried to find out how to pass data from outside script to page.evaluate
script. In all form submission examples that I’ve seen, they all use fixed data. As of 1.3.0, it’s still unsupported.
So I thought I would pass it as a global variable instead.
And here’s how I did it.
function setGlobal(page, name, data) {
var json = JSON.stringify(data);
var fn = 'return window[' + JSON.stringify(name) + ']=' + json + ';';
return page.evaluate(new Function(fn));
}
(note: I tried adding it to WebPage.prototype
but it didn’t work)
And then in the page handler:
setGlobal(page, '__dt_credentials', credentials);
and finally the code inside page.evaluate
:
un.value = __dt_credentials.username;
add / view all comments
Responses