Skip to content

Commit f76edbc

Browse files
authored
Migration to Selenium 4 (#209) +semver: breaking
* Migration to Selenium 4 +semver: breaking * Rename methods and update documentation file
1 parent dbb0aba commit f76edbc

27 files changed

+85
-174
lines changed

Aquality.Selenium/src/Aquality.Selenium/Aquality.Selenium.csproj

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@
1414
<RepositoryType>git</RepositoryType>
1515
<PackageTags>selenium webdriver browser automation</PackageTags>
1616
<PackageLicenseFile>LICENSE</PackageLicenseFile>
17-
<Copyright>Copyright 2019 Aquality Automation</Copyright>
17+
<Copyright>Copyright 2022 Aquality Automation</Copyright>
1818
<IsPackable>true</IsPackable>
1919
</PropertyGroup>
2020

21-
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
21+
<PropertyGroup>
2222
<DocumentationFile>Aquality.Selenium.xml</DocumentationFile>
2323
<NoWarn>1591</NoWarn>
2424
</PropertyGroup>
@@ -68,8 +68,7 @@
6868
</ItemGroup>
6969

7070
<ItemGroup>
71-
<PackageReference Include="Microsoft.Edge.SeleniumTools" Version="3.141.2" />
72-
<PackageReference Include="Aquality.Selenium.Core" Version="1.6.1" />
71+
<PackageReference Include="Aquality.Selenium.Core" Version="2.0.0" />
7372
<PackageReference Include="WebDriverManager" Version="2.12.3" />
7473
</ItemGroup>
7574

Aquality.Selenium/src/Aquality.Selenium/Aquality.Selenium.xml

Lines changed: 24 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Aquality.Selenium/src/Aquality.Selenium/Browsers/Browser.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
using Aquality.Selenium.Core.Applications;
33
using Aquality.Selenium.Core.Localization;
44
using OpenQA.Selenium;
5-
using OpenQA.Selenium.Remote;
65
using OpenQA.Selenium.Support.Extensions;
76
using System.Drawing;
87
using System.Reflection;
@@ -27,7 +26,7 @@ public class Browser : IApplication
2726
/// Instantiate browser.
2827
/// </summary>
2928
/// <param name="webDriver">Instance of Selenium WebDriver for desired web browser.</param>
30-
public Browser(RemoteWebDriver webDriver)
29+
public Browser(WebDriver webDriver)
3130
{
3231
Driver = webDriver;
3332
Logger = AqualityServices.LocalizedLogger;
@@ -48,7 +47,7 @@ public Browser(RemoteWebDriver webDriver)
4847
/// Gets instance of Selenium WebDriver.
4948
/// </summary>
5049
/// <value>Instance of Selenium WebDriver for desired web browser.</value>
51-
public RemoteWebDriver Driver { get; }
50+
public WebDriver Driver { get; }
5251

5352
/// <summary>
5453
/// Gets name of desired browser from configuration.
@@ -388,7 +387,6 @@ public enum BrowserName
388387
{
389388
Chrome,
390389
Edge,
391-
EdgeChromium,
392390
Firefox,
393391
IExplorer,
394392
Opera,

Aquality.Selenium/src/Aquality.Selenium/Browsers/BrowserFactory.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
using Aquality.Selenium.Core.Localization;
33
using Aquality.Selenium.Core.Utilities;
44
using OpenQA.Selenium;
5-
using OpenQA.Selenium.Remote;
65

76
namespace Aquality.Selenium.Browsers
87
{
@@ -24,7 +23,7 @@ protected BrowserFactory(IActionRetrier actionRetrier, IBrowserProfile browserPr
2423
protected ITimeoutConfiguration TimeoutConfiguration { get; }
2524
protected ILocalizedLogger LocalizedLogger { get; }
2625

27-
protected abstract RemoteWebDriver Driver { get; }
26+
protected abstract WebDriver Driver { get; }
2827

2928
public virtual Browser Browser
3029
{

Aquality.Selenium/src/Aquality.Selenium/Browsers/BrowserNavigation.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using Aquality.Selenium.Core.Localization;
22
using OpenQA.Selenium;
3-
using OpenQA.Selenium.Remote;
43
using System;
54

65
namespace Aquality.Selenium.Browsers
@@ -10,9 +9,9 @@ namespace Aquality.Selenium.Browsers
109
/// </summary>
1110
public class BrowserNavigation : INavigation
1211
{
13-
private readonly RemoteWebDriver driver;
12+
private readonly WebDriver driver;
1413

15-
internal BrowserNavigation(RemoteWebDriver driver)
14+
internal BrowserNavigation(WebDriver driver)
1615
{
1716
this.driver = driver;
1817
}

Aquality.Selenium/src/Aquality.Selenium/Browsers/BrowserTabNavigation.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using Aquality.Selenium.Core.Localization;
2-
using OpenQA.Selenium.Remote;
2+
using OpenQA.Selenium;
33
using System;
44
using System.Collections.Generic;
55
using System.Linq;
@@ -8,9 +8,9 @@ namespace Aquality.Selenium.Browsers
88
{
99
public class BrowserTabNavigation : IBrowserTabNavigation
1010
{
11-
private readonly RemoteWebDriver driver;
11+
private readonly WebDriver driver;
1212

13-
internal BrowserTabNavigation(RemoteWebDriver driver)
13+
internal BrowserTabNavigation(WebDriver driver)
1414
{
1515
this.driver = driver;
1616
}

Aquality.Selenium/src/Aquality.Selenium/Browsers/LocalBrowserFactory.cs

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,13 @@
66
using OpenQA.Selenium.Edge;
77
using OpenQA.Selenium.Firefox;
88
using OpenQA.Selenium.IE;
9-
using OpenQA.Selenium.Remote;
109
using OpenQA.Selenium.Safari;
1110
using System;
1211
using System.IO;
1312
using WebDriverManager;
1413
using WebDriverManager.DriverConfigs;
1514
using WebDriverManager.DriverConfigs.Impl;
1615
using WebDriverManager.Helpers;
17-
using EdgeChromiumOptions = Microsoft.Edge.SeleniumTools.EdgeOptions;
18-
using EdgeChromiumService = Microsoft.Edge.SeleniumTools.EdgeDriverService;
19-
using EdgeChromiumDriver = Microsoft.Edge.SeleniumTools.EdgeDriver;
2016
using Aquality.Selenium.Core.Localization;
2117
using OpenQA.Selenium.Opera;
2218

@@ -34,14 +30,14 @@ public LocalBrowserFactory(IActionRetrier actionRetrier, IBrowserProfile browser
3430
{
3531
}
3632

37-
protected override RemoteWebDriver Driver
33+
protected override WebDriver Driver
3834
{
3935
get
4036
{
4137
var commandTimeout = TimeoutConfiguration.Command;
4238
var browserName = BrowserProfile.BrowserName;
4339
var driverSettings = BrowserProfile.DriverSettings;
44-
RemoteWebDriver driver;
40+
WebDriver driver;
4541
switch (browserName)
4642
{
4743
case BrowserName.Chrome:
@@ -62,14 +58,10 @@ protected override RemoteWebDriver Driver
6258
(InternetExplorerOptions)driverSettings.DriverOptions, commandTimeout);
6359
break;
6460
case BrowserName.Edge:
61+
SetUpDriver(new EdgeConfig(), driverSettings);
6562
driver = GetDriver<EdgeDriver>(EdgeDriverService.CreateDefaultService(),
6663
(EdgeOptions)driverSettings.DriverOptions, commandTimeout);
6764
break;
68-
case BrowserName.EdgeChromium:
69-
SetUpDriver(new EdgeConfig(), driverSettings);
70-
driver = GetDriver<EdgeChromiumDriver>(EdgeChromiumService.CreateChromiumService(),
71-
(EdgeChromiumOptions)driverSettings.DriverOptions, commandTimeout);
72-
break;
7365
case BrowserName.Opera:
7466
SetUpDriver(new OperaConfig(), driverSettings);
7567
driver = GetDriver<OperaDriver>(OperaDriverService.CreateDefaultService(),
@@ -86,9 +78,9 @@ protected override RemoteWebDriver Driver
8678
}
8779
}
8880

89-
private RemoteWebDriver GetDriver<T>(DriverService driverService, DriverOptions driverOptions, TimeSpan commandTimeout) where T : RemoteWebDriver
81+
private WebDriver GetDriver<T>(DriverService driverService, DriverOptions driverOptions, TimeSpan commandTimeout) where T : WebDriver
9082
{
91-
return (T) Activator.CreateInstance(typeof(T), driverService, driverOptions, commandTimeout);
83+
return (T)Activator.CreateInstance(typeof(T), driverService, driverOptions, commandTimeout);
9284
}
9385

9486
private static void SetUpDriver(IDriverConfig driverConfig, IDriverSettings driverSettings)

Aquality.Selenium/src/Aquality.Selenium/Browsers/RemoteBrowserFactory.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using Aquality.Selenium.Configurations;
22
using Aquality.Selenium.Core.Localization;
33
using Aquality.Selenium.Core.Utilities;
4+
using OpenQA.Selenium;
45
using OpenQA.Selenium.Remote;
56
using System;
67

@@ -16,7 +17,7 @@ public RemoteBrowserFactory(IActionRetrier actionRetrier, IBrowserProfile browse
1617
{
1718
}
1819

19-
protected override RemoteWebDriver Driver
20+
protected override WebDriver Driver
2021
{
2122
get
2223
{

Aquality.Selenium/src/Aquality.Selenium/Configurations/BrowserProfile.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,12 @@ public BrowserName BrowserName
2525
{
2626
get
2727
{
28-
if (!Enum.TryParse(settingsFile.GetValue<string>(".browserName"), ignoreCase: true, out BrowserName browserName))
28+
var dirtyName = settingsFile.GetValue<string>(".browserName");
29+
if (dirtyName.Equals("edgechromium", StringComparison.InvariantCultureIgnoreCase))
30+
{
31+
throw new NotSupportedException("EdgeChromium is now officially supported in Selenium 4. Please use 'edge' browserName in settings.json");
32+
}
33+
if (!Enum.TryParse(dirtyName, ignoreCase: true, out BrowserName browserName))
2934
{
3035
return BrowserName.Other;
3136
}
@@ -49,8 +54,6 @@ public IDriverSettings DriverSettings
4954
return new ChromeSettings(settingsFile);
5055
case BrowserName.Edge:
5156
return new EdgeSettings(settingsFile);
52-
case BrowserName.EdgeChromium:
53-
return new EdgeChromiumSettings(settingsFile);
5457
case BrowserName.Firefox:
5558
return new FirefoxSettings(settingsFile);
5659
case BrowserName.IExplorer:

Aquality.Selenium/src/Aquality.Selenium/Configurations/WebDriverSettings/ChromeSettings.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public override DriverOptions DriverOptions
2828
{
2929
var options = new ChromeOptions();
3030
SetChromePrefs(options);
31-
SetCapabilities(options, (name, value) => options.AddAdditionalCapability(name, value, isGlobalCapability: true));
31+
SetCapabilities(options, (name, value) => options.AddAdditionalOption(name, value));
3232
SetChromeArguments(options);
3333
SetPageLoadStrategy(options);
3434
return options;

0 commit comments

Comments
 (0)