using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace FacebookLoginTests
{
[TestFixture]
public class LoginTests
{
private ChromeDriver[] drivers;
[OneTimeSetUp]
public void Setup()
{
drivers = new ChromeDriver[4];
// Start four Chrome instances
for (int i = 0; i < 4; i++)
{
ChromeOptions options = new ChromeOptions();
drivers[i] = new ChromeDriver(options);
}
}
[OneTimeTearDown]
public void Cleanup()
{
// Quit all Chrome instances
foreach (var driver in drivers)
{
driver.Quit();
}
}
[TestCaseSource(nameof(UserCredentialsData))]
public void LoginTest(UserCredentials credentials)
{
Parallel.ForEach(drivers, (driver) =>
{
driver.Navigate().GoToUrl("https://www.facebook.com");
LoginPage loginPage = new LoginPage(driver);
HomePage homePage = loginPage.Login(credentials.Username, credentials.Password);
// Assert the login was successful
Assert.IsTrue(homePage.IsLoggedIn());
});
}
private static IEnumerable<UserCredentials> UserCredentialsData()
{
// Define usernames and passwords
yield return new UserCredentials("username1", "password1");
yield return new UserCredentials("username2", "password2");
yield return new UserCredentials("username3", "password3");
yield return new UserCredentials("username4", "password4");
}
}
// Data Model
public class UserCredentials
{
public string Username { get; set; }
public string Password { get; set; }
public UserCredentials(string username, string password)
{
Username = username;
Password = password;
}
}
// Page Object Model (POM) classes
public class LoginPage
{
private IWebDriver driver;
private By emailInput = By.Id("email");
private By passwordInput = By.Id("pass");
private By loginButton = By.Id("loginbutton");
public LoginPage(IWebDriver driver)
{
this.driver = driver;
}
public HomePage Login(string username, string password)
{
driver.FindElement(emailInput).SendKeys(username);
driver.FindElement(passwordInput).SendKeys(password);
driver.FindElement(loginButton).Click();
return new HomePage(driver);
}
}
public class HomePage
{
private IWebDriver driver;
private By profileLink = By.XPath("//a[@title='Profile']");
public HomePage(IWebDriver driver)
{
this.driver = driver;
}
public bool IsLoggedIn()
{
return driver.FindElement(profileLink).Displayed;
}
}
}
No comments:
Post a Comment