Skip to content
This repository was archived by the owner on Dec 8, 2022. It is now read-only.

Commit d1b4a1a

Browse files
committed
Fixed issue with invalid cast for Selenium interfaces
1 parent 5406a05 commit d1b4a1a

File tree

8 files changed

+31
-97
lines changed

8 files changed

+31
-97
lines changed

Unickq.SpecFlow.Selenium.Example/App.config

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929

3030
<autofac>
3131
<components>
32-
<component name="ChromeDebug" type="Unickq.SpecFlow.Selenium.Local.Chrome, Unickq.SpecFlow.Selenium.SpecFlowPlugin" service="OpenQA.Selenium.IWebDriver, WebDriver" instance-scope="per-dependency">
32+
<component name="ChromeDebug" type="Unickq.SpecFlow.Selenium.Local.ChromeDriver, Unickq.SpecFlow.Selenium.SpecFlowPlugin" service="OpenQA.Selenium.IWebDriver, WebDriver" instance-scope="per-dependency">
3333
<parameters>
3434
<parameter name="capabilities">
3535
<dictionary>
@@ -42,7 +42,7 @@
4242
</parameters>
4343
</component>
4444

45-
<component name="FirefoxDebug" type="Unickq.SpecFlow.Selenium.Local.Firefox, Unickq.SpecFlow.Selenium.SpecFlowPlugin" service="OpenQA.Selenium.IWebDriver, WebDriver" instance-scope="per-dependency">
45+
<component name="FirefoxDebug" type="Unickq.SpecFlow.Selenium.Local.FirefoxDriver, Unickq.SpecFlow.Selenium.SpecFlowPlugin" service="OpenQA.Selenium.IWebDriver, WebDriver" instance-scope="per-dependency">
4646
<parameters>
4747
<parameter name="capabilities">
4848
<dictionary>

Unickq.SpecFlow.Selenium.Plugin/Extensions.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using OpenQA.Selenium;
1+
using System;
2+
using OpenQA.Selenium;
23
using TechTalk.SpecFlow;
34

45
namespace Unickq.SpecFlow.Selenium
@@ -16,5 +17,15 @@ public static IWebDriver GetWebDriver(this ScenarioContext scenarioContext)
1617
}
1718
throw new SpecFlowException("Driver is not present in ScenarioContext");
1819
}
20+
21+
public static string[] ParseWithDelimiter(string input, char splitter = '=')
22+
{
23+
var prms = input.Split(splitter);
24+
if (prms.Length != 2)
25+
{
26+
throw new ArgumentException($"Preference count doesn't equal to 2. Please use '{splitter}' delimiter");
27+
}
28+
return new[] { prms[0], prms[1] };
29+
}
1930
}
2031
}

Unickq.SpecFlow.Selenium.Plugin/Local/Chrome.cs renamed to Unickq.SpecFlow.Selenium.Plugin/Local/ChromeDriver.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
namespace Unickq.SpecFlow.Selenium.Local
66
{
7-
public class Chrome : LocalDriver
7+
public class ChromeDriver : OpenQA.Selenium.Chrome.ChromeDriver
88
{
99
private static ChromeOptions SetOptions(Dictionary<string, object> capabilities)
1010
{
@@ -25,7 +25,7 @@ private static ChromeOptions SetOptions(Dictionary<string, object> capabilities)
2525
}
2626
else if (cap.Key.StartsWith("UserProfilePreference", StringComparison.OrdinalIgnoreCase))
2727
{
28-
var args = ParseWithDelimiter(cap.Value.ToString());
28+
var args = Extensions.ParseWithDelimiter(cap.Value.ToString());
2929
options.AddUserProfilePreference(args[0], args[1]);
3030
}
3131
else if (cap.Key.Equals("BinaryLocation", StringComparison.OrdinalIgnoreCase))
@@ -38,14 +38,14 @@ private static ChromeOptions SetOptions(Dictionary<string, object> capabilities)
3838
}
3939
else if (cap.Key.StartsWith("Capability", StringComparison.OrdinalIgnoreCase))
4040
{
41-
var args = ParseWithDelimiter(cap.Value.ToString());
41+
var args = Extensions.ParseWithDelimiter(cap.Value.ToString());
4242
options.AddAdditionalCapability(args[0], args[1]);
4343
}
4444
}
4545
return options;
4646
}
4747

48-
public Chrome(Dictionary<string, object> capabilities) : base(new ChromeDriver(SetOptions(capabilities)))
48+
public ChromeDriver(Dictionary<string, object> capabilities) : base(SetOptions(capabilities))
4949
{
5050
}
5151
}

Unickq.SpecFlow.Selenium.Plugin/Local/Edge.cs renamed to Unickq.SpecFlow.Selenium.Plugin/Local/EdgeDriver.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44

55
namespace Unickq.SpecFlow.Selenium.Local
66
{
7-
public class Edge : LocalDriver
7+
public class EdgeDriver : OpenQA.Selenium.Edge.EdgeDriver
88
{
9-
public Edge(Dictionary<string, object> capabilities) : base(new EdgeDriver(SetOptions(capabilities)))
9+
public EdgeDriver(Dictionary<string, object> capabilities) : base(SetOptions(capabilities))
1010
{
1111
}
1212

@@ -17,7 +17,7 @@ private static EdgeOptions SetOptions(Dictionary<string, object> capabilities)
1717
{
1818
if (cap.Key.StartsWith("Capability", StringComparison.OrdinalIgnoreCase))
1919
{
20-
var args = ParseWithDelimiter(cap.Value.ToString());
20+
var args = Extensions.ParseWithDelimiter(cap.Value.ToString());
2121
options.AddAdditionalCapability(args[0], args[1]);
2222
}
2323
}

Unickq.SpecFlow.Selenium.Plugin/Local/Firefox.cs renamed to Unickq.SpecFlow.Selenium.Plugin/Local/FirefoxDriver.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
namespace Unickq.SpecFlow.Selenium.Local
66
{
7-
public class Firefox : LocalDriver
7+
public class FirefoxDriver : OpenQA.Selenium.Firefox.FirefoxDriver
88
{
99
private static FirefoxOptions SetOptions(Dictionary<string, object> capabilities)
1010
{
@@ -13,7 +13,7 @@ private static FirefoxOptions SetOptions(Dictionary<string, object> capabilities
1313
{
1414
if (cap.Key.StartsWith("Capability", StringComparison.OrdinalIgnoreCase))
1515
{
16-
var args = ParseWithDelimiter(cap.Value.ToString());
16+
var args = Extensions.ParseWithDelimiter(cap.Value.ToString());
1717
options.AddAdditionalCapability(args[0], args[1]);
1818
}
1919
else if (cap.Key.Equals("Arguments", StringComparison.OrdinalIgnoreCase))
@@ -22,7 +22,7 @@ private static FirefoxOptions SetOptions(Dictionary<string, object> capabilities
2222
}
2323
else if (cap.Key.StartsWith("Preference", StringComparison.OrdinalIgnoreCase))
2424
{
25-
var args = ParseWithDelimiter(cap.Value.ToString());
25+
var args = Extensions.ParseWithDelimiter(cap.Value.ToString());
2626
options.SetPreference(args[0], args[1]);
2727
}
2828
else if (cap.Key.Equals("Extensions", StringComparison.OrdinalIgnoreCase))
@@ -49,7 +49,7 @@ private static FirefoxOptions SetOptions(Dictionary<string, object> capabilities
4949
return options;
5050
}
5151

52-
public Firefox(Dictionary<string, object> capabilities) : base(new FirefoxDriver(SetOptions(capabilities)))
52+
public FirefoxDriver(Dictionary<string, object> capabilities) : base(SetOptions(capabilities))
5353
{
5454
}
5555
}

Unickq.SpecFlow.Selenium.Plugin/Local/InternetExplorer.cs renamed to Unickq.SpecFlow.Selenium.Plugin/Local/InternetExplorerDriver.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44

55
namespace Unickq.SpecFlow.Selenium.Local
66
{
7-
public class InternetExplorer : LocalDriver
7+
public class InternetExplorerDriver : OpenQA.Selenium.IE.InternetExplorerDriver
88
{
9-
public InternetExplorer(Dictionary<string, object> capabilities) : base(new InternetExplorerDriver(SetOptions(capabilities)))
9+
public InternetExplorerDriver(Dictionary<string, object> capabilities) : base(SetOptions(capabilities))
1010
{
1111
}
1212

@@ -17,7 +17,7 @@ private static InternetExplorerOptions SetOptions(Dictionary<string, object> cap
1717
{
1818
if (cap.Key.StartsWith("capability", StringComparison.OrdinalIgnoreCase))
1919
{
20-
var args = ParseWithDelimiter(cap.Value.ToString());
20+
var args = Extensions.ParseWithDelimiter(cap.Value.ToString());
2121
options.AddAdditionalCapability(args[0], args[1]);
2222
}
2323
else if (cap.Key.Equals("BrowserCommandLineArguments", StringComparison.OrdinalIgnoreCase))

Unickq.SpecFlow.Selenium.Plugin/Local/LocalDriver.cs

Lines changed: 0 additions & 77 deletions
This file was deleted.

Unickq.SpecFlow.Selenium.Plugin/Local/Safari.cs renamed to Unickq.SpecFlow.Selenium.Plugin/Local/SafariDriver.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44

55
namespace Unickq.SpecFlow.Selenium.Local
66
{
7-
public class Safari : LocalDriver
7+
public class SafariDriver : OpenQA.Selenium.Safari.SafariDriver
88
{
9-
public Safari(Dictionary<string, object> capabilities) : base(new SafariDriver(SetOptions(capabilities)))
9+
public SafariDriver(Dictionary<string, object> capabilities) : base(SetOptions(capabilities))
1010
{
1111
}
1212

@@ -17,7 +17,7 @@ private static SafariOptions SetOptions(Dictionary<string, object> capabilities)
1717
{
1818
if (cap.Key.StartsWith("Capability", StringComparison.OrdinalIgnoreCase))
1919
{
20-
var args = ParseWithDelimiter(cap.Value.ToString());
20+
var args = Extensions.ParseWithDelimiter(cap.Value.ToString());
2121
options.AddAdditionalCapability(args[0], args[1]);
2222
}
2323
else if (cap.Key.Equals("AcceptInsecureCertificates", StringComparison.OrdinalIgnoreCase))

0 commit comments

Comments
 (0)