Thursday, 22 May 2014

Orange County R Users Group (OC-RUG): RSelenium Webinar

Orange County R Users Group (OC-RUG): RSelenium Webinar

Yesterday I gave a webinar on the RSelenium package to the OC-RUG. When I published RSelenium on CRAN Ray DiGiacomo the president of OC-RUG was kind enough to invite me to present RSelenium and that webinar was held on the 21st of May. I would like to thank OC-RUG and Ray in particular for the opportunity.

I will use this blog to present the video of the webinar and also for a bit of bookkeeping. Firstly I would like to return to two of the questions asked in the Q&A.

Q&A question 2 and 3

How would you save a screenshot to file using RSelenium?

In the seminar I suggested that the Selenium webdriver returned the png in a base 64 encoded format. I tried to save the output to file using writeBin and remarked that I probably needed to decode the output. So here is what I should have done:

b64out <- remDr$screenshot()
writeBin(base64Decode(b64out, "raw"), 'nameoffile.png')

How would you use a chrome profile?

In the seminar I remarked that the google chrome browser had hundreds of start up options. They are actually termed command line switches. The two I was after were --user-data-dir and --profile-directory. It would then have been sufficient to use:

args = list(paste0('--user-data-dir=',dataDir)
, paste0('--profile-directory=',profileDir))
cprof <- list(chromeOptions = list(args = args))
remDr <- remoteDriver(browserName = 'chrome', extraCapabilities = cprof)

Added to RSelenium

I add the above functionality to RSelenium. So now the screenshot method of the remoteDriver class has an optional file argument. If display is FALSE and a file argument is given RSelenium will now save the png to file.

Secondly there is now a getChromeProfile utility function in a similar vein to the existing getFirefoxProfile function. The function is documented in the RSelenium package. Its basic usage is as follows:

# example from windows using a profile directory "Profile 1"
dataDir <- "C:\\Users\\john\\AppData\\Local\\Google\\Chrome\\User Data"
cprof <- getChromeProfile(dataDir, "Profile 1")
remDr <- remoteDriver(browserName = "chrome", extraCapabilities = cprof)

So it takes two arguments: a users chrome data directory and the profile directory within that data directory from which you want to run.

I will update the version of RSelenium on CRAN in the coming weeks. If you would like to run the dev version with added features you can install it with:


and remember to file any issues you may have to github so RSelenium can improve as a package :).

The webinar screencast

The directors cut

I have shot an extended version of the webinar with the fabled missing javascript example which follows:

The slides and R scripts.

And finally I have posted the slides for the webinar to github. Please find them at There are also some R scripts contained in the master branch of the github project .


Hopefully that ties up any loose ends. It was great fun preparing the webinar. I enjoyed giving it and I’m grateful to everyone who attended.

1 comment:

  1. If you want your ex-girlfriend or ex-boyfriend to come crawling back to you on their knees (even if they're dating somebody else now) you need to watch this video
    right away...

    (VIDEO) Win your ex back with TEXT messages?