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

Method request_driver_version

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

Source from the content-addressed store, hash-verified

324 }
325
326 fn request_driver_version(&mut self) -> Result<String, Error> {
327 let major_browser_version_binding = self.get_major_browser_version();
328 let major_browser_version = major_browser_version_binding.as_str();
329 let cache_path = self.get_cache_path()?;
330 let mut metadata = get_metadata(self.get_logger(), &cache_path);
331
332 match get_driver_version_from_metadata(
333 &metadata.drivers,
334 self.driver_name,
335 major_browser_version,
336 ) {
337 Some(driver_version) => {
338 self.log.trace(format!(
339 "Driver TTL is valid. Getting {} version from metadata",
340 &self.driver_name
341 ));
342 Ok(driver_version)
343 }
344 _ => {
345 self.assert_online_or_err(OFFLINE_REQUEST_ERR_MSG)?;
346
347 let major_browser_version_int =
348 major_browser_version.parse::<i32>().unwrap_or_default();
349 let driver_version = if self.is_browser_version_stable()
350 || major_browser_version.is_empty()
351 || self.is_browser_version_unstable()
352 {
353 // For discovering the latest driver version, the CfT endpoints are also used
354 self.request_latest_driver_version_from_online()?
355 } else if !major_browser_version.is_empty()
356 && major_browser_version_int < MIN_CHROMEDRIVER_VERSION_CFT
357 {
358 // For old versions (chromedriver 114-), the traditional method should work:
359 // https://chromedriver.chromium.org/downloads
360 self.request_driver_version_from_latest(
361 &self.create_latest_release_with_version_url(),
362 )?
363 } else {
364 // As of chromedriver 115+, the metadata for version discovery are published
365 // by the "Chrome for Testing" (CfT) JSON endpoints:
366 // https://googlechromelabs.github.io/chrome-for-testing/
367 self.request_good_driver_version_from_online()?
368 };
369
370 let driver_ttl = self.get_ttl();
371 if should_cache_driver_version(driver_ttl, major_browser_version, &driver_version) {
372 metadata.drivers.push(create_driver_metadata(
373 major_browser_version,
374 self.driver_name,
375 &driver_version,
376 driver_ttl,
377 ));
378 write_metadata(&metadata, self.get_logger(), cache_path);
379 }
380 Ok(driver_version)
381 }
382 }
383 }

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