From 2e71327e0451554ffe365f8922875f4db39b342a Mon Sep 17 00:00:00 2001 From: Greg Gauthier Date: Mon, 12 Oct 2020 23:42:17 +0100 Subject: [PATCH] had to upgrade to the Selenium 4 alpha to get this to work --- weehawken/BrowserDriver.cs | 66 ++++++++++++++++++++++++++++++++++++++ weehawken/BrowserTests.cs | 34 ++++++++------------ weehawken/README.md | 4 +++ weehawken/weehawken.csproj | 4 +-- 4 files changed, 86 insertions(+), 22 deletions(-) create mode 100644 weehawken/BrowserDriver.cs create mode 100644 weehawken/README.md diff --git a/weehawken/BrowserDriver.cs b/weehawken/BrowserDriver.cs new file mode 100644 index 0000000..2f6523f --- /dev/null +++ b/weehawken/BrowserDriver.cs @@ -0,0 +1,66 @@ +using System; +using OpenQA.Selenium.Chrome; +using OpenQA.Selenium.Edge; +using OpenQA.Selenium.Firefox; +using OpenQA.Selenium.Remote; +using OpenQA.Selenium.Safari; + +namespace weehawken +{ + public static class BrowserDriver + { + public static RemoteWebDriver GetDriver(string browser, bool headless) + { + switch (browser) + { + case "chrome": + return GetChrome(headless); + case "firefox": + return GetFirefox(headless); + case "safari": + return getSafari(headless); + case "edge": + return getEdge(headless); + default: + throw new ArgumentException("Invalid browser specified"); + } + } + + + private static RemoteWebDriver GetChrome(bool headless) + { + ChromeOptions opts = new ChromeOptions(); + if (headless) + { + opts.AddArguments("headless"); + } + opts.AcceptInsecureCertificates = true; + RemoteWebDriver driver = new ChromeDriver(opts); + driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5); + return driver; + } + + private static RemoteWebDriver GetFirefox(bool headless) + { + FirefoxOptions fopts = new FirefoxOptions(); + if (headless) + { + fopts.AddArguments("--headless"); + } + fopts.AcceptInsecureCertificates = true; + RemoteWebDriver driver = new FirefoxDriver(fopts); + driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5); + return driver; + } + + private static RemoteWebDriver getSafari(bool headless) + { + return new SafariDriver(); + } + + private static RemoteWebDriver getEdge(bool headless) + { + return new EdgeDriver(); + } + } +} diff --git a/weehawken/BrowserTests.cs b/weehawken/BrowserTests.cs index 4177e0b..a961356 100644 --- a/weehawken/BrowserTests.cs +++ b/weehawken/BrowserTests.cs @@ -1,7 +1,6 @@ using System; using NUnit.Framework; using OpenQA.Selenium; -using OpenQA.Selenium.Chrome; using OpenQA.Selenium.Firefox; using OpenQA.Selenium.Remote; @@ -9,56 +8,51 @@ namespace weehawken { public class Tests { - ChromeDriver chromeDriver; - FirefoxDriver firefoxDriver; - String url = "https://duckduckgo.com/"; + private String url; + private RemoteWebDriver driver; [SetUp] public void Setup() { Console.WriteLine("Beginning Test"); + url = "https://duckduckgo.com/"; } [TearDown] public void TearDown() { + driver.Quit(); Console.WriteLine("End Test"); + } [Test] public void ChromeTest() { Console.WriteLine("Chrome Test"); - ChromeOptions copts = new ChromeOptions(); - copts.AddArguments("headless"); - chromeDriver = new ChromeDriver(copts); - chromeDriver.Navigate().GoToUrl(url); + driver = BrowserDriver.GetDriver("chrome", true); + driver.Navigate().GoToUrl(url); RemoteWebElement searchBox = - (RemoteWebElement)chromeDriver.FindElementByXPath("//input[@id='search_form_input_homepage']"); + (RemoteWebElement)driver.FindElementByXPath("//input[@id='search_form_input_homepage']"); searchBox.SendKeys("frankenberries"); searchBox.SendKeys(Keys.Enter); RemoteWebElement results = - (RemoteWebElement)chromeDriver.FindElementByPartialLinkText("Monster cereal"); + (RemoteWebElement)driver.FindElementByPartialLinkText("Monster cereal"); Assert.NotNull(results); - chromeDriver.Quit(); } [Test] public void FirefoxTest() { Console.WriteLine("Firefox Test"); - FirefoxOptions fopts = new FirefoxOptions(); - fopts.AddArguments("--headless"); - firefoxDriver = new FirefoxDriver(fopts); - firefoxDriver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(3); - firefoxDriver.Navigate().GoToUrl(url); - firefoxDriver.FindElementByXPath("//input[@id='search_form_input_homepage']") + driver = BrowserDriver.GetDriver("firefox", true); + driver.Navigate().GoToUrl(url); + driver.FindElementByXPath("//input[@id='search_form_input_homepage']") .SendKeys("frankenberries" + Keys.Enter); - RemoteWebElement results = - (RemoteWebElement)firefoxDriver.FindElementByPartialLinkText("Monster cereal"); + (RemoteWebElement)driver.FindElementByPartialLinkText("Monster cereal"); Assert.NotNull(results); - firefoxDriver.Quit(); + driver.Quit(); } } } \ No newline at end of file diff --git a/weehawken/README.md b/weehawken/README.md new file mode 100644 index 0000000..58bae2c --- /dev/null +++ b/weehawken/README.md @@ -0,0 +1,4 @@ +# WEEHAWKEN C# TEST FRAMEWORK + +This framework is basically a clone port of my java framework. It's a work in progress. + diff --git a/weehawken/weehawken.csproj b/weehawken/weehawken.csproj index 20d7d02..b6043e8 100644 --- a/weehawken/weehawken.csproj +++ b/weehawken/weehawken.csproj @@ -10,8 +10,8 @@ - - + +