2017-07-25 1 views
1

J'essaie d'apprendre en utilisant RSelenium. Je suis coincé avec juste essayer de démarrer le serveur en utilisant rsDriver. J'essaie simplement d'exécuter le code ci-dessous et obtenu l'erreur suivante:RSelenium rsDriver pair certificat SSL problème

rD <- rsDriver() 
checking Selenium Server versions: 
BEGIN: PREDOWNLOAD 
Error in open.connection(con, "rb") : 
    Peer certificate cannot be authenticated with given CA certificates 

Je cherchai empile autour de trop-plein et a découvert que nous pouvons donner des options à rsDriver en utilisant ci-dessous, mais j'ai toujours erreur:

my_extra <- list("--ignore-ssl-errors=true", "--ssl-protocol=tlsv1", "--web-security=no") 
rs <- rsDriver(extraCapabilities = my_extra) 
checking Selenium Server versions: 
BEGIN: PREDOWNLOAD 
Error in open.connection(con, "rb") : 
    Peer certificate cannot be authenticated with given CA certificates 

Y a-t-il autre chose qui me manque?

pour HTTR :: fonction GET, je suis en mesure de contourner le certificat SSL à l'aide:

set_config(config(ssl_verifypeer=0L)). 

Mais cette méthode ne fonctionne pas pour RSelenium :: rsDriver.

Voici mon spec système: Mon OS: Microsoft Windows 10

R version 3.4.1 (2017-06-30) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 
Running under: Windows >= 8 x64 (build 9200) 

Matrix products: default 

locale: 
[1] LC_COLLATE=English_United States.1252 
[2] LC_CTYPE=English_United States.1252 
[3] LC_MONETARY=English_United States.1252 
[4] LC_NUMERIC=C       
[5] LC_TIME=English_United States.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] RCurl_1.95-4.8 bitops_1.0-6 httr_1.2.1  wdman_0.2.2  
[5] RSelenium_1.7.1 

loaded via a namespace (and not attached): 
[1] Rcpp_0.12.12  XML_3.98-1.9  binman_0.1.0  assertthat_0.2.0 
[5] R6_2.2.2   jsonlite_1.5  semver_0.2.0  curl_2.7   
[9] tools_3.4.1  yaml_2.1.14  compiler_3.4.1 caTools_1.17.1 
[13] openssl_0.9.6 
+0

Voir https: //github.com/johndharrison/wdman/issues/9 – jdharrison

+0

J'ai essayé cette commande: ** httr :: with_config (config (ssl_verifypeer = 0L), wdman :: selenium (retcommand = TRUE)) **. Mais ça ne marche toujours pas. Erreur identique: le certificat homologue ne peut pas être authentifié avec des certificats d'autorité de certification donnés. Existe-t-il une autre façon de démarrer le serveur? Peut-être en utilisant une autre méthode que je peux passer une commande "Ignorer le certificat SSL"? – addicted

+0

Le problème est avec 'jsonlite :: fromJSON'. Le paquet sous-jacent 'curl' doit être passé à l'argument' ssl_verifypeer'. Dans le numéro donné, vous pouvez le faire en se moquant de la fonction. – jdharrison

Répondre

1

rsDriver utilise le package binman pour gérer le téléchargement des binaires pertinents. Le projet de sélénium répertorie sa sortie dans un fichier JSON à https://www.googleapis.com/storage/v1/b/selenium-release/o Vous devriez avoir le même problème si vous essayez:

jsonlite::fromJSON("https://www.googleapis.com/storage/v1/b/selenium-release/o") 

Vous pouvez mock le curl pertinent fundtion en utilisant quelque chose comme:

my_new_handle <- function(...){ 
    print("mocking") 
    h <- .Call(curl:::R_new_handle, PACKAGE = "curl") 
    curl:::handle_setopt(h, ..., ssl_verifypeer = FALSE) 
    h 
} 
testthat::with_mock(
    `curl::new_handle` = my_new_handle, 
    { 
    selCommand <- httr::with_config(config(ssl_verifypeer=0L),wdman::selenium(‌​retcommand=TRUE)) 
    } 
) 
+0

Vous avez raison. Je reçois le même problème avec jsonlite. Cependant, je parviens à télécharger seleniumserver, chromedriver, firefoxdriver et phantomjs en utilisant les fonctions que vous avez fournies. Dois-je continuer à utiliser la commande moqueuse avec rsDriver? – addicted

+0

Une fois les pilotes téléchargés, vous pouvez définir 'check = FALSE' comme argument dans' rsDriver' et ne pas vérifier les pilotes mis à jour. – jdharrison

+0

Je mets dans la vérification = FAUX mais rsDriver vérifie toujours pour les versions de serveur de sélénium. (Je connais un peu cette digression par rapport à ma question initiale, mais j'essaie toujours de faire fonctionner rsDriver.) – addicted