Skip to content

Instantly share code, notes, and snippets.

@mnpenner
Created September 5, 2013 01:34
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mnpenner/6445019 to your computer and use it in GitHub Desktop.
Save mnpenner/6445019 to your computer and use it in GitHub Desktop.
Selenium, PhantomJS, Node, Screenshots and Sizzle
var webdriver = require('selenium-webdriver');
var fs = require('fs');
var driver = new webdriver.Builder()
.withCapabilities(webdriver.Capabilities.phantomjs())
.build();
webdriver.WebDriver.prototype.saveScreenshot = function(filename) {
return driver.takeScreenshot().then(function(data) {
fs.writeFile(filename, data.replace(/^data:image\/png;base64,/,''), 'base64', function(err) {
if(err) throw err;
});
})
};
webdriver.By.sizzle = function(selector) {
driver.executeScript("return typeof Sizzle==='undefined'").then(function(noSizzle) {
if(noSizzle) driver.executeScript(fs.readFileSync('sizzle.min.js', {encoding: 'utf8'}));
});
return new webdriver.By.js("return Sizzle('"+selector.replace(/"/g,'\\"')+"')[0]");
};
driver.get('http://google.com/');
driver.findElement({sizzle:'input[name=q]'}).sendKeys('cheese\n');
driver.saveScreenshot('cheese.png');
driver.quit();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment