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:

devtools::install_github("johndharrison/RSelenium")

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 http://johndharrison.github.io/RSOCRUG. There are also some R scripts contained in the master branch of the github project https://github.com/johndharrison/RSOCRUG .

Conclusion

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.