Skip to content

Commit b0db1ee

Browse files
committed
[dotnet] add Selenium Manager support for linux & mac
1 parent ba1821d commit b0db1ee

File tree

3 files changed

+60
-16
lines changed

3 files changed

+60
-16
lines changed

dotnet/src/webdriver/BUILD.bazel

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,18 @@ copy_file(
246246
out = "Selenium.WebDriver.targets",
247247
)
248248

249+
copy_file(
250+
name = "manager-linux",
251+
src = "//common/manager:linux/selenium-manager",
252+
out = "manager/linux/selenium-manager",
253+
)
254+
255+
copy_file(
256+
name = "manager-macos",
257+
src = "//common/manager:macos/selenium-manager",
258+
out = "manager/macos/selenium-manager",
259+
)
260+
249261
copy_file(
250262
name = "manager-windows",
251263
src = "//common/manager:windows/selenium-manager.exe",
@@ -266,6 +278,8 @@ nuget_package(
266278
deps = [
267279
":logo",
268280
":props",
281+
":manager-linux",
282+
":manager-macos",
269283
":manager-windows",
270284
":net45",
271285
":net46",

dotnet/src/webdriver/SeleniumManager.cs

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@
2020
using System.Collections.Generic;
2121
using System.Diagnostics;
2222

23+
#if !NETFRAMEWORK
24+
using System.Runtime.InteropServices;
25+
#endif
26+
2327
namespace OpenQA.Selenium
2428
{
2529
/// <summary>
@@ -30,9 +34,9 @@ public static class SeleniumManager
3034
{
3135
private static string binary;
3236
private static readonly List<string> KnownDrivers = new List<string>() {
33-
"geckodriver.exe",
34-
"chromedriver.exe",
35-
"msedgedriver.exe"
37+
"geckodriver",
38+
"chromedriver",
39+
"msedgedriver"
3640
};
3741

3842
/// <summary>
@@ -44,14 +48,15 @@ public static class SeleniumManager
4448
/// </returns>
4549
public static string DriverPath(string driverName)
4650
{
51+
driverName = driverName.Replace(".exe", "");
4752
if (!KnownDrivers.Contains(driverName))
4853
{
4954
throw new WebDriverException("Unable to locate driver with name: " + driverName);
5055
}
5156
var binaryFile = Binary;
5257
if (binaryFile == null) return null;
5358

54-
var arguments = "--driver " + driverName.Replace(".exe", "");
59+
var arguments = "--driver " + driverName;
5560
var output = RunCommand(binaryFile, arguments);
5661
return output.Replace("INFO\t", "").TrimEnd();
5762
}
@@ -65,13 +70,26 @@ private static string Binary
6570
{
6671
if (string.IsNullOrEmpty(binary))
6772
{
68-
// TODO Identify runtime platform
69-
if (!Environment.OSVersion.Platform.ToString().StartsWith("Win"))
70-
{
71-
throw new WebDriverException("Selenium Manager only supports Windows in .NET at this time");
72-
}
73-
74-
binary = "selenium-manager/windows/selenium-manager.exe";
73+
#if NETFRAMEWORK
74+
binary = "selenium-manager/windows/selenium-manager.exe";
75+
#else
76+
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
77+
{
78+
binary = "selenium-manager/windows/selenium-manager.exe";
79+
}
80+
else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
81+
{
82+
binary = "selenium-manager/linux/selenium-manager";
83+
}
84+
else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
85+
{
86+
binary = "selenium-manager/macos/selenium-manager";
87+
}
88+
else
89+
{
90+
throw new WebDriverException("Selenium Manager did not find supported operating system");
91+
}
92+
#endif
7593
}
7694

7795
return binary;

dotnet/src/webdriver/build/Selenium.WebDriver.targets

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,23 @@
22
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33

44
<ItemGroup>
5-
<None Include="$(MSBuildThisFileDirectory)..\manager\windows\selenium-manager.exe">
6-
<Link>selenium-manager\windows\%(Filename)%(Extension)</Link>
7-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
8-
<Visible>False</Visible>
9-
</None>
5+
<None Include="$(MSBuildThisFileDirectory)..\manager\linux\selenium-manager">
6+
<Link>selenium-manager\linux\%(Filename)%(Extension)</Link>
7+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
8+
<Visible>False</Visible>
9+
</None>
10+
11+
<None Include="$(MSBuildThisFileDirectory)..\manager\macos\selenium-manager">
12+
<Link>selenium-manager\macos\%(Filename)%(Extension)</Link>
13+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
14+
<Visible>False</Visible>
15+
</None>
16+
17+
<None Include="$(MSBuildThisFileDirectory)..\manager\windows\selenium-manager.exe">
18+
<Link>selenium-manager\windows\%(Filename)%(Extension)</Link>
19+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
20+
<Visible>False</Visible>
21+
</None>
1022
</ItemGroup>
1123

1224
</Project>

0 commit comments

Comments
 (0)