UNPKG

webdriver-sizzle

Version:

Locate a selenium-webdriver element by sizzle CSS selector

68 lines (61 loc) 2.19 kB
// Generated by CoffeeScript 1.12.7 var fs, path; path = require('path'); fs = require('fs'); /* @param driver - a built driver instance @param selenium - the selenium module. very important that these are using the same code/version, b/c of the library's global control flow. */ module.exports = function(driver, selenium) { var Deferred, WebElement, checkSizzleExists, injectSizzleIfMissing, one; if (selenium == null) { selenium = require('selenium-webdriver'); } if (!((driver.executeScript != null) && (driver.findElement != null) && (driver.findElements != null))) { throw new Error("Driver passed to webdriver-sizzle must implement executeScript(), findElement() and findElements()."); } Deferred = selenium.promise.Deferred; WebElement = selenium.WebElement; checkSizzleExists = function() { return driver.executeScript(function() { return window.Sizzle != null; }); }; injectSizzleIfMissing = function(sizzleExists) { var sizzleCode; if (sizzleExists) { } else { sizzleCode = fs.readFileSync(path.join(__dirname, '../lib', 'sizzle.min.js')); return driver.executeScript("var module = {exports: {}};\n" + sizzleCode + "\nwindow.Sizzle = module.exports;"); } }; one = function(selector) { var finder; finder = function() { return checkSizzleExists().then(injectSizzleIfMissing).then(function() { return driver.findElement(selenium.By.js(function(selector) { return (window.Sizzle(selector) || [])[0]; }, selector)); })["catch"](function(err) { throw new Error("Selector " + selector + " matches nothing"); }); }; return driver.findElement(finder); }; one.all = function(selector) { var finder; finder = function() { return checkSizzleExists().then(injectSizzleIfMissing).then(function() { return driver.findElements(selenium.By.js(function(selector) { return window.Sizzle(selector) || []; }, selector)); })["catch"](function(err) { throw new Error("Selector " + selector + " matches nothing"); }); }; return driver.findElements(finder); }; return one; };