1

I am trying to implement BrowserStack into my selenium project and am currently getting this error and it has been very frustrating.

Here is my TestInit class that holds my test setup method and teardown:

using CFSSOnlineBanking.Src.PageObject.PageObjectsAdmin;
using CFSSOnlineBanking.Src.PageObjectsAdmin;
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Edge;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.Remote;
using OpenQA.Selenium.Support.UI;
using System;

namespace CFSSOnlineBanking.Src.PageObject.Drivers.Utilities
{
[TestFixture]
class TestInit<TWebDriver> where TWebDriver : IWebDriver, new()
{
    //Fields
    public static IWebDriver driver;

    //Setup Method for Admin Smoke Tests that sets up the test suite by opening the browser and logging in
    [OneTimeSetUp]
    public void SetUp()
    {
        try
        {
            switch (typeof(TWebDriver).Name)
            {
                case "ChromeDriver":
                    ChromeOptions capability = new ChromeOptions();
                    capability.AddAdditionalCapability("os", "Windows", true);
                    capability.AddAdditionalCapability("os_version", "10", true);
                    capability.AddAdditionalCapability("browser", "Chrome", true);
                    capability.AddAdditionalCapability("browser_version", "latest", true);
                    capability.AddAdditionalCapability("build", "Build 1.0", true);
                    capability.AddAdditionalCapability("browserstack.local", "true", true);
                    capability.AddAdditionalCapability("browserstack.debug", "true", true);
                    capability.AddAdditionalCapability("browserstack.selenium_version", "3.14.0", true);
                    capability.AddAdditionalCapability("browserstack.user", "***************", true);
                    capability.AddAdditionalCapability("browserstack.key", "***************", true);
                    driver = new RemoteWebDriver(new Uri("https://hub-cloud.browserstack.com/wd/hub/"), capability);
                    break;
                case "FirefoxDriver":
                    FirefoxOptions capability1 = new FirefoxOptions();
                    capability1.AddAdditionalCapability("os", "Windows", true);
                    capability1.AddAdditionalCapability("os_version", "10", true);
                    capability1.AddAdditionalCapability("browser", "Firefox", true);
                    capability1.AddAdditionalCapability("browser_version", "latest", true);
                    capability1.AddAdditionalCapability("build", "Build 1.0", true);
                    capability1.AddAdditionalCapability("browserstack.local", "true", true);
                    capability1.AddAdditionalCapability("browserstack.debug", "true", true);
                    capability1.AddAdditionalCapability("browserstack.selenium_version", "3.10.0", true);
                    capability1.AddAdditionalCapability("browserstack.user", "***************", true);
                    capability1.AddAdditionalCapability("browserstack.key", "***************", true);
                    driver = new RemoteWebDriver(new Uri("https://hub-cloud.browserstack.com/wd/hub/"), capability1);
                    break;
                case "EdgeDriver":
                    EdgeOptions capability2 = new EdgeOptions();
                    capability2.AddAdditionalCapability("os", "Windows");
                    capability2.AddAdditionalCapability("os_version", "10");
                    capability2.AddAdditionalCapability("browser", "Edge");
                    capability2.AddAdditionalCapability("browser_version", "latest");
                    capability2.AddAdditionalCapability("build", "Build 1.0");
                    capability2.AddAdditionalCapability("browserstack.local", "true");
                    capability2.AddAdditionalCapability("browserstack.debug", "true");
                    capability2.AddAdditionalCapability("browserstack.selenium_version", "3.5.2");
                    capability2.AddAdditionalCapability("browserstack.user", "***************");
                    capability2.AddAdditionalCapability("browserstack.key", "***************");
                    driver = new RemoteWebDriver(new Uri("https://hub-cloud.browserstack.com/wd/hub/"), capability2);
                    break;
            }
           
            AdminLoginPage adminLoginPage = new AdminLoginPage(driver);
            AdminDashboard adminDashboard = new AdminDashboard(driver);
            WebDriverWait webDriverWait = new WebDriverWait(driver, TimeSpan.FromSeconds(40));
            adminLoginPage.Login();
            WebDriverWait webDriverWait1 = new WebDriverWait(driver, TimeSpan.FromSeconds(40));
            webDriverWait1.Until(c => adminDashboard.signOffBtn);
            _ = driver.FindElement(By.Name("ctl00$HBAdminPageHeader$hlnkSignOff"));
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
        }
    }

    //Teardown Method to close all driver instances.
    [OneTimeTearDown]
    public void TearDown()
    {
        driver.Quit();
    }

}
}

Here is the test that I am trying to run:

    //Open Add Promotion screen
    [Test, Category("Smoke Test Admin")]
    [Category("Connect Native")]
    public void AddPromotionDisplay()
    {
        var addPromotionPage = new AddPromotionPage(driver);
        var adp = new AdminDashboard(driver);
        Actions action = new Actions(driver); // **LINE 91 IN STACKTRACE**
        WebDriverWait webDriverWait = new(driver, TimeSpan.FromSeconds(30));

        //Click Add Promotion Page validate Elements are present
        action.MoveToElement(webDriverWait.Until(c => adp.promotionsOption)).Perform();
        adp.addPromotionOption.Click();
        Assert.IsTrue(webDriverWait.Until(c => addPromotionPage.promotionNameField).Displayed);
        Assert.IsTrue(webDriverWait.Until(c => addPromotionPage.beginingMonthField).Displayed);
        Assert.IsTrue(webDriverWait.Until(c => addPromotionPage.beginigDayField).Displayed);
        Assert.IsTrue(webDriverWait.Until(c => addPromotionPage.beginingYearField).Displayed);
    }

When I debug and it takes me to my to page objects listed below:

var adp = new AdminDashboard(driver);

namespace CFSSOnlineBanking.Src.PageObject.PageObjectsAdmin
{
class AdminDashboard
{
    //Fields
    private IWebDriver driver;

    //Constructor
    public AdminDashboard(IWebDriver driver)
    {
        this.driver = driver;
    }

    //Admin Dashboard elements
    public IWebElement signOffBtn => driver.FindElement(By.Id("ctl00_HBAdminPageHeader_hlnkSignOff"));
    public IWebElement promotionsOption => driver.FindElement(By.LinkText("Promotions"));
    public IWebElement eStmtPromotionOption => driver.FindElement(By.LinkText("eStmt Promotion"));
}
}

var addPromotionPage = new AddPromotionPage(driver);

using OpenQA.Selenium;

namespace CFSSOnlineBanking.Src.PageObject.PageObjectsAdmin
{
class AddPromotionPage
{
    //Fields
    private IWebDriver driver;

    //Constructor
    public AddPromotionPage(IWebDriver driver)
    {
        this.driver = driver;
    }

    //Add Promotion Page Elements
    public IWebElement promotionNameField => driver.FindElement(By.Id("ctl00_ContentPlaceHolder_ctrPromotionDetail_txtPromoName"));
    public IWebElement beginingMonthField => driver.FindElement(By.Id("ctl00_ContentPlaceHolder_ctrPromotionDetail_txtBeginMonth"));
    public IWebElement beginigDayField => driver.FindElement(By.Id("ctl00_ContentPlaceHolder_ctrPromotionDetail_txtBeginDay"));
    public IWebElement beginingYearField => driver.FindElement(By.Id("ctl00_ContentPlaceHolder_ctrPromotionDetail_txtBeginYear"));
}
}

Which then says that the driver is null. I am unsure as to why it is null... I don't know if this has to do with the over all question, but thats what I am thinking. Is there a way to fix that?

StackTrace:

enter image description here

Kody Berry
  • 111
  • 1
  • 7

0 Answers0