예제 #1
0
        public async Task StartAsync()
        {
            Server.PayTester.NoCSP = true;
            await Server.StartAsync();

            var windowSize = (Width : 1200, Height : 1000);
            var builder    = new ConfigurationBuilder();

            builder.AddUserSecrets("AB0AC1DD-9D26-485B-9416-56A33F268117");
            var config = builder.Build();

            // Run `dotnet user-secrets set RunSeleniumInBrowser true` to run tests in browser
            var runInBrowser = config["RunSeleniumInBrowser"] == "true";
            // Reset this using `dotnet user-secrets remove RunSeleniumInBrowser`

            var chromeDriverPath = config["ChromeDriverDirectory"] ?? (Server.PayTester.InContainer ? "/usr/bin" : Directory.GetCurrentDirectory());

            var options = new ChromeOptions();

            if (!runInBrowser)
            {
                options.AddArguments("headless");
            }
            options.AddArguments($"window-size={windowSize.Width}x{windowSize.Height}");
            options.AddArgument("shm-size=2g");
            options.AddArgument("start-maximized");
            if (Server.PayTester.InContainer)
            {
                // Shot in the dark to fix https://stackoverflow.com/questions/53902507/unknown-error-session-deleted-because-of-page-crash-from-unknown-error-cannot
                options.AddArgument("--disable-dev-shm-usage");
                Driver = new OpenQA.Selenium.Remote.RemoteWebDriver(new Uri("http://selenium:4444/wd/hub"), new RemoteSessionSettings(options));
                var containerIp = File.ReadAllText("/etc/hosts").Split('\n', StringSplitOptions.RemoveEmptyEntries).Last()
                                  .Split('\t', StringSplitOptions.RemoveEmptyEntries)[0].Trim();
                TestLogs.LogInformation($"Selenium: Container's IP {containerIp}");
                ServerUri = new Uri(Server.PayTester.ServerUri.AbsoluteUri.Replace($"http://{Server.PayTester.HostName}", $"http://{containerIp}", StringComparison.OrdinalIgnoreCase), UriKind.Absolute);
            }
            else
            {
                var cds = ChromeDriverService.CreateDefaultService(chromeDriverPath);
                cds.EnableVerboseLogging = true;
                cds.Port     = Utils.FreeTcpPort();
                cds.HostName = "127.0.0.1";
                cds.Start();
                Driver = new ChromeDriver(cds, options,
                                          // A bit less than test timeout
                                          TimeSpan.FromSeconds(50));
                ServerUri = Server.PayTester.ServerUri;
            }
            Driver.Manage().Window.Maximize();

            TestLogs.LogInformation($"Selenium: Using {Driver.GetType()}");
            TestLogs.LogInformation($"Selenium: Browsing to {ServerUri}");
            TestLogs.LogInformation($"Selenium: Resolution {Driver.Manage().Window.Size}");
            GoToRegister();
            Driver.AssertNoError();
        }
예제 #2
0
 public void goHomeHCADev(bool useCredentials)
 {
     AutomationCore.base_tests.BaseTest.WriteReport("Loggin into sbx-im.healthtrustpg.com...");
     OpenQA.Selenium.Remote.RemoteWebDriver rwd = ((OpenQA.Selenium.Remote.RemoteWebDriver)browser.Native);
     rwd.Manage().Cookies.DeleteAllCookies();
     SuperTest.SessConfiguration.AppHost = "http://sbx-im.healthtrustpg.com";
     rwd.Manage().Window.Size = new Size(800, 600);
     rwd.Manage().Window.Maximize();
     browser.Visit("http://sbx-im.healthtrustpg.com/");
     HeaderLoginLink.Click();
     HpgAssert.False(browser.HasDialog(""), "Verify no dialog is present");
     HpgAssert.Contains(pageHeader.Text, "Home Page", "Verify 'Home Page' is loaded");
 }
예제 #3
0
 public void goHomeHCADev(string username, string password)
 {
     AutomationCore.base_tests.BaseTest.WriteReport("Loggin into sbx-im.healthtrustpg.com...");
     OpenQA.Selenium.Remote.RemoteWebDriver rwd = ((OpenQA.Selenium.Remote.RemoteWebDriver)browser.Native);
     rwd.Manage().Cookies.DeleteAllCookies();
     SuperTest.SessConfiguration.AppHost = "http://sbx-im.healthtrustpg.com";
     rwd.Manage().Window.Size = new Size(800, 600);
     rwd.Manage().Window.Maximize();
     browser.Visit("http://sbx-im.healthtrustpg.com/Account/Login");
     if (rwd.Capabilities.BrowserName.ToLower().Contains("internet"))
     {
         DateTime exitTime = DateTime.Now.AddMinutes(15);
         while (DateTime.Now <= exitTime)
         {
             //if (browser.HasDialog(""))
             if (true)
             {
                 SuperTest.WriteReport("Enter credentials");
                 SendKeys.SendWait(username);
                 System.Threading.Thread.Sleep(2000);
                 SendKeys.SendWait("{TAB}");
                 System.Threading.Thread.Sleep(2000);
                 SendKeys.SendWait(password);
                 System.Threading.Thread.Sleep(2000);
                 SendKeys.SendWait("{ENTER}");
             }
             if (!browser.HasDialog(""))
             {
                 break;
             }
         }
     }
     else
     {
         SuperTest.WriteReport("Enter credentials");
         System.Threading.Thread.Sleep(10000);
         SendKeys.SendWait(username);
         System.Threading.Thread.Sleep(2000);
         SendKeys.SendWait("{TAB}");
         System.Threading.Thread.Sleep(2000);
         SendKeys.SendWait(password);
         System.Threading.Thread.Sleep(2000);
         SendKeys.SendWait("{ENTER}");
     }
     HpgAssert.False(browser.HasDialog(""), "Verify no dialog is present");
     HpgAssert.Contains(pageHeader.Text, "Home Page", "Verify 'Home Page' is loaded");
 }
예제 #4
0
        private IWebDriver getCurrentDriver()
        {
            OpenQA.Selenium.Remote.RemoteWebDriver driver = null;

            switch (_browserType)
            {
            case API.Enumerations.BrowserType.InternetExplorer:
                driver = new OpenQA.Selenium.IE.InternetExplorerDriver();
                break;

            case API.Enumerations.BrowserType.Firefox:
                driver = new OpenQA.Selenium.Firefox.FirefoxDriver();
                break;

            case API.Enumerations.BrowserType.Chrome:
                driver = new OpenQA.Selenium.Chrome.ChromeDriver();
                break;
            }

            driver.Manage().Cookies.DeleteAllCookies();

            return(driver);
        }
        public static Uri GetExecutorURLFromDriver(OpenQA.Selenium.Remote.RemoteWebDriver driver)
        {
            var executorField = typeof(OpenQA.Selenium.Remote.RemoteWebDriver)
                                .GetField("executor",
                                          System.Reflection.BindingFlags.NonPublic
                                          | System.Reflection.BindingFlags.Instance);

            object executor = executorField.GetValue(driver);

            var internalExecutorField = executor.GetType()
                                        .GetField("internalExecutor",
                                                  System.Reflection.BindingFlags.NonPublic
                                                  | System.Reflection.BindingFlags.Instance);
            object internalExecutor = internalExecutorField.GetValue(executor);

            //executor.CommandInfoRepository
            var remoteServerUriField = internalExecutor.GetType()
                                       .GetField("remoteServerUri",
                                                 System.Reflection.BindingFlags.NonPublic
                                                 | System.Reflection.BindingFlags.Instance);
            var remoteServerUri = remoteServerUriField.GetValue(internalExecutor) as Uri;

            return(remoteServerUri);
        }
예제 #6
0
 public void loginIdeaManagement(string baseURL = "http://sbx-im.healthtrustpg.com", string username = "", string password = "")
 {
     AutomationCore.base_tests.BaseTest.WriteReport("Loggin into " + baseURL + "...");
     OpenQA.Selenium.Remote.RemoteWebDriver rwd = ((OpenQA.Selenium.Remote.RemoteWebDriver)browser.Native);
     rwd.Manage().Cookies.DeleteAllCookies();
     SuperTest.SessConfiguration.AppHost = baseURL;
     rwd.Manage().Window.Size = new Size(800, 600);
     System.Threading.Thread.Sleep(2000);
     rwd.Manage().Window.Maximize();
     if (!string.IsNullOrEmpty(username))
     {
         browser.Visit(baseURL + "/Account/Login");
         if (rwd.Capabilities.BrowserName.ToLower().Contains("internet"))
         {
             DateTime exitTime = DateTime.Now.AddMinutes(15);
             while (DateTime.Now <= exitTime)
             {
                 //if (browser.HasDialog(""))
                 if (true)
                 {
                     SuperTest.WriteReport("Enter credentials into " + rwd.Capabilities.BrowserName);
                     SendKeys.SendWait(username);
                     System.Threading.Thread.Sleep(2000);
                     SendKeys.SendWait("{TAB}");
                     System.Threading.Thread.Sleep(2000);
                     if (Control.IsKeyLocked(Keys.CapsLock))
                     {
                         SendKeys.SendWait("{CAPSLOCK}" + password);
                     }
                     else
                     {
                         SendKeys.SendWait(password);
                     }
                     System.Threading.Thread.Sleep(2000);
                     SendKeys.SendWait("{ENTER}");
                 }
                 if (!browser.HasDialog(""))
                 {
                     break;
                 }
             }
         }
         else
         {
             SuperTest.WriteReport("Enter credentials into " + rwd.Capabilities.BrowserName);
             System.Threading.Thread.Sleep(10000);
             SendKeys.SendWait(username);
             System.Threading.Thread.Sleep(2000);
             SendKeys.SendWait("{TAB}");
             System.Threading.Thread.Sleep(2000);
             if (Control.IsKeyLocked(Keys.CapsLock))
             {
                 SendKeys.SendWait("{CAPSLOCK}" + password);
             }
             else
             {
                 SendKeys.SendWait(password);
             }
             System.Threading.Thread.Sleep(2000);
             SendKeys.SendWait("{ENTER}");
         }
         try
         {
             HpgAssert.True(browser.HasNoDialog(""), "Verify no dialog is present");
         }
         catch (Exception)
         {
             System.Threading.Thread.Sleep(60000);
         }
         HpgAssert.True(browser.HasNoDialog(""), "Verify no dialog is present");
     }
     //HpgAssert.Contains(pageHeader.Text, "Home Page", "Verify 'Home Page' is loaded");
     //TODO: Determine if home page header text is coming back or not.
     HpgAssert.True(browser.FindXPath("//a[@class='logo']/img").Exists(), "Verify page is loaded");
 }
예제 #7
0
 public static PassengerConfiguration WithDriver(this PassengerConfiguration cfg, OpenQA.Selenium.Remote.RemoteWebDriver driver)
 {
     cfg.Driver = new WebDriverBindings(driver);
     return(cfg);
 }
예제 #8
0
 public WebDriverBindings(OpenQA.Selenium.Remote.RemoteWebDriver driver)
 {
     Driver = driver;
 }