docs: function actionOnElement(actionName) {
    return function(selector /*[, position], done */) {
      const done = arguments[arguments.length - 1]
      const position = arguments.length > 2 ? arguments[1] : undefined;
      if (typeof selector !== 'string') {
        return done(new TypeError(`${actionName}: "selector" must be a string`));
      }
      else if (position && (typeof position.x !== 'number' || typeof position.y !== 'number')) {
        return done(new TypeError(`${actionName}: "position.x" and ".y" must be numbers`));
      }
      var child = this.child;
  
      debug(`Finding "${selector}"`);
      getBounds(this, selector)
        .then(function(bounds) {
          return position ? relativePosition(bounds, position) : center(bounds);
        })
        .then(function(point) {
          debug(`${actionName} "${selector}" at ${point.x}, ${point.y}`);
          child.call(actionName, point.x, point.y, done);
        })
        .catch(done);
    }
  }