Skip to content

Commit 7d5fff9

Browse files
authored
[rust] Fallback for chromedriver versions in Selenium Manager (#11383) (#11454)
[rust] Fallback for chromedriver versions in Selenium Manager
1 parent 8181483 commit 7d5fff9

2 files changed

Lines changed: 33 additions & 10 deletions

File tree

rust/src/chrome.rs

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ use crate::metadata::{
2929
};
3030
use 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

3535
const 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,

rust/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ pub const DASH_DASH_VERSION: &str = "{} --version";
5555
pub const ENV_PROGRAM_FILES: &str = "PROGRAMFILES";
5656
pub const ENV_PROGRAM_FILES_X86: &str = "PROGRAMFILES(X86)";
5757
pub const ENV_LOCALAPPDATA: &str = "LOCALAPPDATA";
58+
pub const FALLBACK_RETRIES: u32 = 5;
5859

5960
pub trait SeleniumManager {
6061
// ----------------------------------------------------------

0 commit comments

Comments
 (0)