@@ -29,7 +29,7 @@ use crate::metadata::{
2929} ;
3030use crate :: {
3131 SeleniumManager , BETA , DASH_DASH_VERSION , DEV , ENV_LOCALAPPDATA , ENV_PROGRAM_FILES ,
32- ENV_PROGRAM_FILES_X86 , NIGHTLY , REG_QUERY , STABLE , WMIC_COMMAND ,
32+ ENV_PROGRAM_FILES_X86 , FALLBACK_RETRIES , NIGHTLY , REG_QUERY , STABLE , WMIC_COMMAND ,
3333} ;
3434
3535const BROWSER_NAME : & str = "chrome" ;
@@ -146,15 +146,37 @@ impl SeleniumManager for ChromeManager {
146146 Ok ( driver_version)
147147 }
148148 _ => {
149- let driver_url = if browser_version. is_empty ( ) {
150- format ! ( "{}{}" , DRIVER_URL , LATEST_RELEASE )
151- } else {
152- format ! ( "{}{}_{}" , DRIVER_URL , LATEST_RELEASE , browser_version)
153- } ;
154- log:: debug!( "Reading {} version from {}" , & self . driver_name, driver_url) ;
155- let driver_version = read_content_from_link ( driver_url) ?;
156-
157- if !browser_version. is_empty ( ) {
149+ let mut driver_version = "" . to_string ( ) ;
150+ let mut browser_version_int = browser_version. parse :: < i32 > ( ) . unwrap_or_default ( ) ;
151+ if browser_version_int > 0 {
152+ for i in 0 ..FALLBACK_RETRIES {
153+ let driver_url = if browser_version. is_empty ( ) {
154+ format ! ( "{}{}" , DRIVER_URL , LATEST_RELEASE )
155+ } else {
156+ format ! ( "{}{}_{}" , DRIVER_URL , LATEST_RELEASE , browser_version_int)
157+ } ;
158+ log:: debug!( "Reading {} version from {}" , & self . driver_name, driver_url) ;
159+ let content = read_content_from_link ( driver_url) ;
160+ match content {
161+ Ok ( version) => {
162+ driver_version = version;
163+ break ;
164+ }
165+ _ => {
166+ log:: warn!(
167+ "Error getting version of {} {}. Retrying with {} {} (attempt {}/{})" ,
168+ & self . driver_name,
169+ browser_version_int,
170+ & self . driver_name,
171+ browser_version_int - 1 ,
172+ i + 1 , FALLBACK_RETRIES
173+ ) ;
174+ browser_version_int -= 1 ;
175+ }
176+ }
177+ }
178+ }
179+ if !browser_version. is_empty ( ) && !driver_version. is_empty ( ) {
158180 metadata. drivers . push ( create_driver_metadata (
159181 browser_version,
160182 self . driver_name ,
0 commit comments