2017-08-06 2 views
1

J'ai demandé et répondu this question il y a quelques jours et a obtenu Rselenium fonctionne bien.avec Rselenium, ne peut plus naviguer

maintenant je ne peux plus naviguer, je ne pense pas que quelque chose a changé donc je suis perplexe.

shell('docker run -d -p 4445:4444 selenium/standalone-chrome') 
remDr <- remoteDriver(remoteServerAddr = "localhost", port = 4445L, browserName = "chrome") 
remDr$navigate("http://www.google.com") # used to work 
# Error in checkError(res) : 
# Undefined error in httr call. httr output: length(url) == 1 is not TRUE 

J'ai fait un peu de débogage et remDr$navigate appelle une méthode appelée queryRD où la question se produit, consultez le code ci-dessous

debugging in: queryRD(qpath, "POST", qdata = list(url = url)) 
debug: { 
    "A method to communicate with the remote server implementing the \\n   JSON wire protocol." 
    getUC.params <- list(url = ipAddr, verb = method, body = qdata, 
     encode = "json") 
    res <- tryCatch({ 
     do.call(httr::VERB, getUC.params) # VERB doesn't like the url argument its getting 
    }, error = function(e) { 
     e 
    }) 
    if (inherits(res, "response")) { 
     resContent <- httr::content(res, simplifyVector = FALSE) 
     checkStatus(resContent) 
    } 
    else { 
     checkError(res) 
    } 
} 

ipAddr est un char(0) au lieu d'une URL valide dans mon cas. Et VERB n'aime pas l'argument url cela devient en conséquence.

Comment puis-je le faire fonctionner comme avant?

Pour obtenir le débogage au bon endroit:

shell('docker run -d -p 4445:4444 selenium/standalone-chrome') 
    remDr <- remoteDriver(remoteServerAddr = "localhost", port = 4445L, browserName = "chrome") 
debugonce(remDr$navigate) 
remDr$navigate("http://www.google.com") 
debugonce(queryRD) 
c 

Répondre

1

Vous devez ouvrir la connexion au serveur Sélénium:

library(RSelenium) 

remDr <- remoteDriver(remoteServerAddr = "localhost", port = 4445L, 
         browserName = "chrome") 
remDr$open() 
remDr$navigate("http://www.google.com") # used to work 
> remDr$getTitle() 
[[1]] 
[1] "Google" 
... 

remDr$close() 
+1

Bon sang, il doit avoir été perdu dans une pâte de copie qui est gênant ,, Merci beaucoup! –