Я пытаюсь представить FindsBy в моем тестовом проекте
public class BoaRegistrationPage
{
public IWebDriver Driver;
public BoaRegistrationPage(IWebDriver driver)
{
this.Driver = driver;
PageFactory.InitElements(driver, this);
}
[FindsBy(How = How.Id, Using = "ReportingPeriodName")]
public SeleniumKendoDropDownList ReportingPeriodDropDown { get; set; }
[FindsBy(How=How.Id, Using ="BranchCode")]
public IWebElement BranchCode { get; set; }
}
(...)
К сожалению, как вы можете видеть, мне нужно использовать его также для типов, отличных от IWebElement, который возвращает ошибку (SeleniuKendoDropDownList).
namespace CompanyReviewSeleniumTests.Wrappers
{
public class SeleniumKendoDropDownList : KendoDropDownList
{
public SeleniumKendoDropDownList(IWebElement webElement) : base(webElement)
{
this.CopyInternalId(webElement);
}
public void SelectByDataItemProperty(string propertyName, string text)
{
Driver.JavaScripts()
.ExecuteScript(
string.Format(
CultureInfo.InvariantCulture,
"$('{0}').data('{1}').select(function(dataItem) {{return dataItem.{3} === '{2}';}});",
ElementCssSelector,
SelectType,
text,
propertyName));
}
public new void SelectByText(string text)
{
WaitUntilOptionsLoaded();
Open();
var listBoxElement = Driver.FindElement(By.CssSelector($"{this.ElementCssSelector}_listbox"));
listBoxElement.FindElement(By.XPath($".//*[contains(text(),'{text}')]"))?.JavaScriptClick();
}
}
}
(...)
Как мне это сделать?
Заранее спасибо за помощь