Untitled
unknown
plain_text
3 months ago
10 kB
6
Indexable
using OpenQA.Selenium;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Keys = OpenQA.Selenium.Keys;
namespace SeleniumBase.PageObjects.MedCompass.CustomElements
{
public class TimeInput<T> where T : class
{
private IWebDriver _driver { get; set; }
private T _pageObject { get; set; }
public IWebElement _componentElement { get; set; }
private IWebElement _startingElement { get; set; }
public By _locator { get; set; }
private IWebElement _label
{
get { return _componentElement.FindElement(By.CssSelector("label")); }
}
private IWebElement _inputHour
{
get { return _componentElement.FindElement(By.XPath(".//input[contains(@placeholder,'hh')]")); }
}
private IWebElement _inputMinute
{
get { return _componentElement.FindElement(By.XPath(".//input[contains(@placeholder,'mm')]")); }
}
private IWebElement _inputSecond
{
get { return _componentElement.FindElement(By.XPath(".//input[contains(@placeholder,'ss')]")); }
}
private IWebElement _inputTimeofDay
{
get { return _componentElement.FindElement(By.XPath(".//input[contains(@placeholder,'--')]")); }
}
internal TimeInput(T page, IWebDriver driver)
{
_driver = driver;
_pageObject = page;
}
internal TimeInput<T> SetProperties(By locator, IWebElement StartingElement = null)
{
_locator = locator;
_startingElement = StartingElement;
return this;
}
public TimeInput<T> GetElement()
{
if (_startingElement == null)
_componentElement = _driver.FindElement(_locator);
else
_componentElement = _startingElement.FindElement(_locator);
if (!(_componentElement.TagName == "app-time-input" || _componentElement.TagName == "app-time"))
throw new Exception("Element found is not of type <app-time-input> !!!");
return this;
}
public T Exists(out bool IsThere)
{
//GetElement();
IsThere = false;
TimeSpan originalWait = _driver.Manage().Timeouts().ImplicitWait;
try
{
_driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromMilliseconds(500);
if (_startingElement == null)
_componentElement = _driver.FindElement(_locator);
else
_componentElement = _startingElement.FindElement(_locator);
IsThere = _componentElement.Displayed;
}
catch (NoSuchElementException)
{
IsThere = false;
}
finally
{
_driver.Manage().Timeouts().ImplicitWait = originalWait; // Setting the Implicit Wait back to the original value.
}
return _pageObject;
}
private string _errorValidationMessage
{
get { return _componentElement.FindElement(By.CssSelector("app-validation-errors")).FindElement(By.CssSelector("span")).Text; }
}
public T IsRequired(out bool isRequired)
{
GetElement();
isRequired = _label.GetAttribute("class").Contains("required");
return _pageObject;
}
public T Clear()
{
GetElement();
_inputHour.ClearInputField(this._driver);
_inputTimeofDay.ClearInputField(this._driver);
_inputMinute.ClearInputField(this._driver);
return _pageObject;
}
public T SetTime(DateTime? date)
{
GetElement();
if (date == null)
throw new Exception("Date to input is null!!!");
string hour12 = date.Value.ToString("hh");
string hour24 = date.Value.ToString("HH");
string minute = date.Value.ToString("mm");
string timeofday = date.Value.ToString("tt");
TimeSpan originalWait = _driver.Manage().Timeouts().ImplicitWait;
_driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromMilliseconds(500);
if (_componentElement.FindElements(By.XPath(".//input[contains(@placeholder,'--')]")).Count.Equals(1))
{
_inputHour.SendKeys(hour12);
_inputMinute.SendKeys(minute);
_inputTimeofDay.SendKeys(timeofday);
_inputHour.SendKeys(Keys.Tab);
}
else
{
_inputHour.SendKeys(hour24);
_inputMinute.SendKeys(minute);
_inputHour.SendKeys(Keys.Tab);
}
_driver.Manage().Timeouts().ImplicitWait = originalWait;
return _pageObject;
}
public T SetTimeWithSeconds(DateTime? date)
{
GetElement();
if (date == null)
throw new Exception("Date to input is null!!!");
string hour = date.Value.ToString("hh");
string minute = date.Value.ToString("mm");
string second = date.Value.ToString("ss");
string timeofday = date.Value.ToString("tt");
_inputHour.SendKeys(hour);
_inputMinute.SendKeys(minute);
_inputSecond.SendKeys(second);
_inputTimeofDay.SendKeys(timeofday);
_inputHour.SendKeys(Keys.Tab);
return _pageObject;
}
public T GetTime(out DateTime time)
{
GetElement();
TimeSpan originalWait = _driver.Manage().Timeouts().ImplicitWait;
_driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromMilliseconds(500);
string timeString = "";
var hour = _inputHour.GetAttribute("value");
var minute = _inputMinute.GetAttribute("value");
if (_componentElement.FindElements(By.XPath(".//input[contains(@placeholder,'--')]")).Count.Equals(1))
{
var timeofday = _inputTimeofDay.GetAttribute("value");
timeString = $"{hour}:{minute} {timeofday}";
time = DateTime.ParseExact(timeString, $"hh:mm tt", CultureInfo.InvariantCulture);
}
else
{
timeString = $"{hour}:{minute}";
time = DateTime.ParseExact(timeString, $"HH:mm", CultureInfo.InvariantCulture);
}
_driver.Manage().Timeouts().ImplicitWait = originalWait;
return _pageObject;
}
public DateTime GetTime()
{
GetElement();
string timeString = "";
var hour = _inputHour.GetAttribute("value");
var minute = _inputMinute.GetAttribute("value");
var timeofday = _inputTimeofDay.GetAttribute("value");
timeString = $"{hour}:{minute} {timeofday}";
return DateTime.ParseExact(timeString, $"hh:mm tt", CultureInfo.InvariantCulture);
}
public T GetTimeWithSeconds(out DateTime time)
{
GetElement();
string timeString = "";
var hour = _inputHour.GetAttribute("value");
var minute = _inputMinute.GetAttribute("value");
var second = _inputSecond.GetAttribute("value");
var timeofday = _inputTimeofDay.GetAttribute("value");
timeString = $"{hour}:{minute}:{second} {timeofday}";
time = DateTime.ParseExact(timeString, $"hh:mm:ss tt", CultureInfo.InvariantCulture);
return _pageObject;
}
public T TryGetTime(out DateTime time)
{
GetElement();
string timeString = "";
var hour = _inputHour.GetAttribute("value");
var minute = _inputMinute.GetAttribute("value");
var timeofday = _inputTimeofDay.GetAttribute("value");
timeString = $"{hour}:{minute} {timeofday}";
if (timeString == ": ")
{
time = new DateTime();
}
else
{
time = DateTime.ParseExact(timeString, $"hh:mm tt", CultureInfo.InvariantCulture);
}
return _pageObject;
}
public T IsTimeEmpty(out bool isTimeEmpty)
{
GetElement();
var hour = _inputHour.GetAttribute("value");
var minute = _inputMinute.GetAttribute("value");
var timeofday = _inputTimeofDay.GetAttribute("value");
string timeString = $"{hour}:{minute} {timeofday}";
isTimeEmpty = timeString.Equals(": ");
return _pageObject;
}
public T GetValidationErrorMessage(out string message)
{
GetElement();
TimeSpan originalWait = _driver.Manage().Timeouts().ImplicitWait;
try
{
_driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromMilliseconds(500);
message = _errorValidationMessage;
}
catch (NoSuchElementException)
{
message = string.Empty;
}
finally
{
_driver.Manage().Timeouts().ImplicitWait = originalWait; // Setting the Implicit Wait back to the original value.
}
return _pageObject;
}
public T IsEnabled(out bool isEnabled)
{
GetElement();
isEnabled = _componentElement.FindElement(By.TagName("input")).Enabled;
return _pageObject;
}
public bool IsEnabled()
{
GetElement();
return _componentElement.FindElement(By.TagName("input")).Enabled;
}
public T GetLabel(out string label)
{
GetElement();
label = _label.Text;
return _pageObject;
}
}
}
Editor is loading...
Leave a Comment