executeScript Inject a snippet of JavaScript into the page for execution in the context of the currently selected frame. The executed script is assumed to be synchronous and the result of evaluating the script will be returned.
remDr: An object of class "rDriver". A remote driver object see remoteDr.
script: character: The script to inject.
args: The arguments of the script as a list.
replace: logical: If TRUE any elements identify as web Elements are converted to such.
...: Additonal function arguments - Currently passes the retry argument.
Returns
If replace is TRUE parses the response from the server for web Elements and converts as such. Otherwise the content returned is assummed to be a simple list.
Examples
## Not run:remDr <- remoteDr()# Get the page sourceremDr %>% go("https://www.google.com/ncr")%>% getPageSource
remDr %>% getTitle()webElem <- remDr %>% findElement("css","img#hplogo")# check if the logo is hiddenremDr %>% executeScript("return document.getElementById('hplogo').hidden;", args = list())# [1] FALSE# hide the logoremDr %>% executeScript("document.getElementById('hplogo').hidden = true;", args = list())# Make the logo visible this time passing a web Element as an argumentremDr %>% executeScript(script ="return arguments[0].hidden = false;", args = list(webElem))# Pass argumentsremDr %>% executeScript(script ="return argument[1] + argument[2];", args = list(1,2))# Return a web ElementremDr %>% executeScript(script ="return document.getElementById('hplogo');", args = list())# ElementId: 0# Remote Driver:# Remote Ip Address: http://localhost:4444/wd/hub# Remote sessionId: 9a83672a-d72b-4873-aa7d-96f7f1f80fa0# Return a web Element in a more complex objectscript <-"var test ={num:1, str:'a', el:document.getElementById('hplogo')};return test;"remDr %>% executeScript(script = script
, args = list())# $str# [1] "a"## $num# [1] 1## $el# ElementId: 0# Remote Driver:# Remote Ip Address: http://localhost:4444/wd/hub# Remote sessionId: 9a83672a-d72b-4873-aa7d-96f7f1f80fa0# Run with replace = FALSEremDr %>% executeScript(script = script
, args = list(), replace =FALSE)# $str# [1] "a"## $num# [1] 1## $el# $el$ELEMENT# [1] "0"remDr %>% setTimeout("script")asScript <-"cb = arguments[0];setTimeout(function(){cb('DONE');},5000); "system.time(test1 <- remDr %>% executeAsyncScript(asScript, args = list()))sScript <-"setTimeout(function(){},5000); return 'DONE';"system.time(test2 <- remDr %>% executeScript(sScript, args = list()))remDr %>% deleteSession()## End(Not run)
See Also
Other documentHandling functions: executeAsyncScript, getPageSource