Skip to content

Commit 5bf00b4

Browse files
authored
[rust] Include --driver flag to Selenium Manager (#11123)
1 parent 2eb3a0e commit 5bf00b4

File tree

2 files changed

+38
-28
lines changed

2 files changed

+38
-28
lines changed

rust/README.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,19 @@ $ cargo run -- --help
1919
selenium-manager 1.0.0-M1
2020
Automated driver management for Selenium
2121
22-
Usage: selenium-manager [OPTIONS] --browser <BROWSER>
22+
Usage: selenium-manager [OPTIONS]
2323
Options:
2424
-b, --browser <BROWSER>
25-
Browser type (e.g., chrome, firefox, edge)
26-
-D, --driver-version <DRIVER_VERSION>
25+
Browser name (chrome, firefox, or edge) [default: ]
26+
-d, --driver <DRIVER>
27+
Driver name (chromedriver, geckodriver, or msedgedriver) [default: ]
28+
-v, --driver-version <DRIVER_VERSION>
2729
Driver version (e.g., 106.0.5249.61, 0.31.0, etc.) [default: ]
2830
-B, --browser-version <BROWSER_VERSION>
2931
Major browser version (e.g., 105, 106, etc.) [default: ]
30-
-d, --debug
32+
-D, --debug
3133
Display DEBUG messages
32-
-t, --trace
34+
-T, --trace
3335
Display TRACE messages
3436
-c, --clear-cache
3537
Clear driver cache

rust/src/main.rs

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -30,24 +30,28 @@ mod metadata;
3030
{usage-heading} {usage}
3131
{all-args}")]
3232
struct Cli {
33-
/// Browser type (e.g., chrome, firefox, edge)
34-
#[clap(short, long, value_parser)]
33+
/// Browser name (chrome, firefox, or edge)
34+
#[clap(short, long, value_parser, default_value = "")]
3535
browser: String,
3636

37+
/// Driver name (chromedriver, geckodriver, or msedgedriver)
38+
#[clap(short, long, value_parser, default_value = "")]
39+
driver: String,
40+
3741
/// Driver version (e.g., 106.0.5249.61, 0.31.0, etc.)
38-
#[clap(short = 'D', long, value_parser, default_value = "")]
42+
#[clap(short = 'v', long, value_parser, default_value = "")]
3943
driver_version: String,
4044

4145
/// Major browser version (e.g., 105, 106, etc.)
4246
#[clap(short = 'B', long, value_parser, default_value = "")]
4347
browser_version: String,
4448

4549
/// Display DEBUG messages
46-
#[clap(short, long)]
50+
#[clap(short = 'D', long)]
4751
debug: bool,
4852

4953
/// Display TRACE messages
50-
#[clap(short, long)]
54+
#[clap(short = 'T', long)]
5155
trace: bool,
5256

5357
/// Clear driver cache
@@ -59,16 +63,20 @@ fn main() -> Result<(), Box<dyn Error>> {
5963
let cli = Cli::parse();
6064
setup_logging(&cli);
6165
let browser_name: String = cli.browser;
66+
let driver_name: String = cli.driver;
6267
let os = OS;
6368
let arch = ARCH;
64-
let browser_manager: Box<dyn BrowserManager> = if browser_name.eq_ignore_ascii_case("chrome") {
69+
let browser_manager: Box<dyn BrowserManager> = if browser_name.eq_ignore_ascii_case("chrome")
70+
|| driver_name.eq_ignore_ascii_case("chromedriver") {
6571
ChromeManager::new()
66-
} else if browser_name.eq_ignore_ascii_case("firefox") {
72+
} else if browser_name.eq_ignore_ascii_case("firefox")
73+
|| driver_name.eq_ignore_ascii_case("geckodriver") {
6774
FirefoxManager::new()
68-
} else if browser_name.eq_ignore_ascii_case("edge") {
75+
} else if browser_name.eq_ignore_ascii_case("edge")
76+
|| driver_name.eq_ignore_ascii_case("msedgedriver") {
6977
EdgeManager::new()
7078
} else {
71-
return Err(format!("Browser {} not supported", browser_name))?;
79+
return Err(format!("Invalid browser/driver name"))?;
7280
};
7381

7482
if cli.clear_cache {
@@ -79,23 +87,23 @@ fn main() -> Result<(), Box<dyn Error>> {
7987
let mut browser_version = cli.browser_version;
8088

8189
if !driver_version.is_empty() && !browser_version.is_empty() {
82-
log::warn!("Ignoring --browser-version (since --driver-version is also used)");
90+
log::warn!("Ignoring --browser-version (since --driver-version is also used)");
8391
}
8492

8593
if driver_version.is_empty() {
86-
if browser_version.is_empty() {
87-
match browser_manager.get_browser_version(os) {
88-
Some(version) => {
89-
browser_version = version;
90-
log::debug!("Detected browser: {} {}", browser_name, browser_version);
91-
}
92-
None => {
93-
log::warn!("The version of {} cannot be detected. Trying with latest driver version", browser_name);
94-
}
94+
if browser_version.is_empty() {
95+
match browser_manager.get_browser_version(os) {
96+
Some(version) => {
97+
browser_version = version;
98+
log::debug!("Detected browser: {} {}", browser_name, browser_version);
99+
}
100+
None => {
101+
log::warn!("The version of {} cannot be detected. Trying with latest driver version", browser_name);
102+
}
103+
}
95104
}
96-
}
97-
driver_version = browser_manager.get_driver_version(&browser_version, os)?;
98-
log::debug!("Required driver: {} {}", browser_manager.get_driver_name(), driver_version);
105+
driver_version = browser_manager.get_driver_version(&browser_version, os)?;
106+
log::debug!("Required driver: {} {}", browser_manager.get_driver_name(), driver_version);
99107
}
100108

101109
let driver_path = browser_manager.get_driver_path_in_cache(&driver_version, os, arch);
@@ -134,4 +142,4 @@ fn setup_logging(cli: &Cli) {
134142
)
135143
})
136144
.init();
137-
}
145+
}

0 commit comments

Comments
 (0)