@@ -210,7 +210,7 @@ pub trait SeleniumManager {
210
210
211
211
fn download_browser (
212
212
& mut self ,
213
- original_browser_version : String ,
213
+ original_browser_version : & str ,
214
214
) -> Result < Option < PathBuf > , Error > {
215
215
let browser_version;
216
216
let cache_path = self . get_cache_path ( ) ?;
@@ -251,10 +251,10 @@ pub trait SeleniumManager {
251
251
// If not in metadata, discover version using online metadata
252
252
if self . is_browser_version_stable ( ) || self . is_browser_version_empty ( ) {
253
253
browser_version =
254
- self . request_latest_browser_version_from_online ( & original_browser_version) ?;
254
+ self . request_latest_browser_version_from_online ( original_browser_version) ?;
255
255
} else {
256
256
browser_version =
257
- self . request_fixed_browser_version_from_online ( & original_browser_version) ?;
257
+ self . request_fixed_browser_version_from_online ( original_browser_version) ?;
258
258
}
259
259
self . set_browser_version ( browser_version. clone ( ) ) ;
260
260
@@ -280,7 +280,7 @@ pub trait SeleniumManager {
280
280
) ) ;
281
281
282
282
// Checking if browser version is in the cache
283
- let browser_binary_path = self . get_browser_binary_path ( & original_browser_version) ?;
283
+ let browser_binary_path = self . get_browser_binary_path ( original_browser_version) ?;
284
284
if browser_binary_path. exists ( ) {
285
285
self . get_logger ( ) . debug ( format ! (
286
286
"{} {} already exists" ,
@@ -296,7 +296,7 @@ pub trait SeleniumManager {
296
296
) ) ) ;
297
297
}
298
298
299
- let browser_url = self . get_browser_url_for_download ( & original_browser_version) ?;
299
+ let browser_url = self . get_browser_url_for_download ( original_browser_version) ?;
300
300
self . get_logger ( ) . debug ( format ! (
301
301
"Downloading {} {} from {}" ,
302
302
self . get_browser_name( ) ,
@@ -311,7 +311,7 @@ pub trait SeleniumManager {
311
311
. parse :: < i32 > ( )
312
312
. unwrap_or_default ( ) ;
313
313
let browser_label_for_download =
314
- self . get_browser_label_for_download ( & original_browser_version) ?;
314
+ self . get_browser_label_for_download ( original_browser_version) ?;
315
315
uncompress (
316
316
& driver_zip_file,
317
317
& self . get_browser_path_in_cache ( ) ?,
@@ -510,7 +510,7 @@ pub trait SeleniumManager {
510
510
511
511
fn download_browser_if_necessary (
512
512
& mut self ,
513
- original_browser_version : String ,
513
+ original_browser_version : & str ,
514
514
) -> Result < ( ) , Error > {
515
515
if self . is_download_browser ( )
516
516
&& !self . is_avoid_browser_download ( )
@@ -751,21 +751,20 @@ pub trait SeleniumManager {
751
751
. debug ( format ! ( "{} not found in PATH" , self . get_driver_name( ) ) ) ;
752
752
}
753
753
}
754
+ let use_driver_in_path = driver_in_path_version. is_some ( )
755
+ && driver_in_path. is_some ( )
756
+ && original_browser_version. is_empty ( ) ;
754
757
755
758
// Discover browser version (or the need to download it, if not available and possible)
756
759
match self . discover_local_browser ( ) {
757
760
Ok ( _) => { }
758
- Err ( err) => {
759
- self . check_error_with_driver_in_path ( & driver_in_path, & driver_in_path_version, err) ?
760
- }
761
+ Err ( err) => self . check_error_with_driver_in_path ( & use_driver_in_path, err) ?,
761
762
}
762
763
763
764
// Download browser if necessary
764
- match self . download_browser_if_necessary ( original_browser_version) {
765
+ match self . download_browser_if_necessary ( & original_browser_version) {
765
766
Ok ( _) => { }
766
- Err ( err) => {
767
- self . check_error_with_driver_in_path ( & driver_in_path, & driver_in_path_version, err) ?
768
- }
767
+ Err ( err) => self . check_error_with_driver_in_path ( & use_driver_in_path, err) ?,
769
768
}
770
769
771
770
// With the discovered browser version, discover the proper driver version using online endpoints
@@ -774,18 +773,17 @@ pub trait SeleniumManager {
774
773
Ok ( driver_version) => {
775
774
self . set_driver_version ( driver_version) ;
776
775
}
777
- Err ( err) => self . check_error_with_driver_in_path (
778
- & driver_in_path,
779
- & driver_in_path_version,
780
- err,
781
- ) ?,
776
+ Err ( err) => self . check_error_with_driver_in_path ( & use_driver_in_path, err) ?,
782
777
}
783
778
}
784
779
785
- // If driver is in path, always use it
786
- if let ( Some ( version) , Some ( path) ) = ( & driver_in_path_version, & driver_in_path) {
787
- // If proper driver version is not the same as the driver in path, display warning
788
- let major_version = self . get_major_version ( version) ?;
780
+ // Use driver in PATH when the user has not specified any browser version
781
+ if use_driver_in_path {
782
+ let version = driver_in_path_version. unwrap ( ) ;
783
+ let path = driver_in_path. unwrap ( ) ;
784
+ let major_version = self . get_major_version ( & version) ?;
785
+
786
+ // Display warning if the discovered driver version is not the same as the driver in PATH
789
787
if !self . get_driver_version ( ) . is_empty ( )
790
788
&& ( self . is_firefox ( ) && !version. eq ( self . get_driver_version ( ) ) )
791
789
|| ( !self . is_firefox ( ) && !major_version. eq ( & self . get_major_browser_version ( ) ) )
@@ -795,7 +793,7 @@ pub trait SeleniumManager {
795
793
the detected {} version ({}); currently, {} {} is recommended for {} {}.*, \
796
794
so it is advised to delete the driver in PATH and retry",
797
795
self . get_driver_name( ) ,
798
- version,
796
+ & version,
799
797
path,
800
798
self . get_browser_name( ) ,
801
799
self . get_browser_version( ) ,
@@ -829,11 +827,10 @@ pub trait SeleniumManager {
829
827
830
828
fn check_error_with_driver_in_path (
831
829
& mut self ,
832
- driver_in_path : & Option < String > ,
833
- driver_in_path_version : & Option < String > ,
830
+ is_driver_in_path : & bool ,
834
831
err : Error ,
835
832
) -> Result < ( ) , Error > {
836
- if driver_in_path_version . is_some ( ) && driver_in_path . is_some ( ) {
833
+ if * is_driver_in_path {
837
834
self . get_logger ( ) . warn ( format ! (
838
835
"Exception managing {}: {}" ,
839
836
self . get_browser_name( ) ,
0 commit comments