var io = require('socket.io-client')('http://xxxxxxxxxxxx.herokuapp.com/'); var exec = require('child_process').exec; var webdriver = require('selenium-webdriver'); var Notification = require('node-notifier'); var notifier = new Notification(); var driver = new webdriver.Builder(). withCapabilities(webdriver.Capabilities.chrome()). build(); driver.get('https://m.facebook.com/messages/read/?tid=id.xxxxxxxxxxxxxxxxx'); // mobile fb loads a lot faster driver.findElement(webdriver.By.css('[name=email]')).sendKeys('email'); driver.findElement(webdriver.By.css('[name=pass]')).sendKeys('password'); driver.findElement(webdriver.By.css('[name=pass]')).submit(); io.on('connect', function () { console.log('yocam: connected to socket.io'); }); // the code inside this is very specific to what i was doing, you don't need it io.on('yo', function (username) { // http://iharder.sourceforge.net/current/macosx/imagesnap/ exec('imagesnap -w 1', function (err) { notifier.notify({ title: 'YOCAM', message: username + ' TOOK YO PICTURE' }); console.log('yocam: ' + username + ' sent a yo'); if (err) throw err; var msg; if (username === 'BRUGGIE') { msg = 'zach, you\'re using this to take a selfie, stop'; } else { msg = 'hi ' + username + '! '; } driver.findElement(webdriver.By.css('textarea[name=body]')).sendKeys(msg); driver.findElement(webdriver.By.css('[type=file]')).sendKeys(process.cwd() + '/snapshot.jpg'); // hecka unstable, sometimes it can't find the el and it crashes // i run the client with `forever` so it just restarts // i could actually catch the exception but nahh driver.wait(function () { return driver.isElementPresent(webdriver.By.css('.btnC[name=send]:not([disabled])')).then(function (element) { driver.findElement(webdriver.By.css('.btnC[name=send]')).click(); }); }); }); });