MCPcopy Create free account
hub / github.com/SeleniumHQ/selenium / request_driver_version

Method request_driver_version

rust/src/chrome.rs:297–355  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

295 }
296
297 fn request_driver_version(&mut self) -> Result<String, Error> {
298 let major_browser_version_binding = self.get_major_browser_version();
299 let major_browser_version = major_browser_version_binding.as_str();
300 let cache_path = self.get_cache_path()?;
301 let mut metadata = get_metadata(self.get_logger(), &cache_path);
302
303 match get_driver_version_from_metadata(
304 &metadata.drivers,
305 self.driver_name,
306 major_browser_version,
307 ) {
308 Some(driver_version) => {
309 self.log.trace(format!(
310 "Driver TTL is valid. Getting {} version from metadata",
311 &self.driver_name
312 ));
313 Ok(driver_version)
314 }
315 _ => {
316 self.assert_online_or_err(OFFLINE_REQUEST_ERR_MSG)?;
317
318 let major_browser_version_int =
319 major_browser_version.parse::<i32>().unwrap_or_default();
320 let driver_version = if self.is_browser_version_stable()
321 || major_browser_version.is_empty()
322 || self.is_browser_version_unstable()
323 {
324 // For discovering the latest driver version, the CfT endpoints are also used
325 self.request_latest_driver_version_from_online()?
326 } else if !major_browser_version.is_empty()
327 && major_browser_version_int < MIN_CHROMEDRIVER_VERSION_CFT
328 {
329 // For old versions (chromedriver 114-), the traditional method should work:
330 // https://chromedriver.chromium.org/downloads
331 self.request_driver_version_from_latest(
332 &self.create_latest_release_with_version_url(),
333 )?
334 } else {
335 // As of chromedriver 115+, the metadata for version discovery are published
336 // by the "Chrome for Testing" (CfT) JSON endpoints:
337 // https://googlechromelabs.github.io/chrome-for-testing/
338 self.request_good_driver_version_from_online()?
339 };
340
341 let driver_ttl = self.get_ttl();
342 if driver_ttl > 0 && !major_browser_version.is_empty() && !driver_version.is_empty()
343 {
344 metadata.drivers.push(create_driver_metadata(
345 major_browser_version,
346 self.driver_name,
347 &driver_version,
348 driver_ttl,
349 ));
350 write_metadata(&metadata, self.get_logger(), cache_path);
351 }
352 Ok(driver_version)
353 }
354 }

Callers

nothing calls this directly

Calls 15

get_metadataFunction · 0.85
create_driver_metadataFunction · 0.85
write_metadataFunction · 0.85
get_cache_pathMethod · 0.80
traceMethod · 0.80
assert_online_or_errMethod · 0.80
is_emptyMethod · 0.80

Tested by

no test coverage detected