Я реализовал следующую настройку в своей структуре автоматизации:
С# Selenium веб-драйвер
IObjectContainer
Спецфлоу
Nunit 3 Распараллеливаемый
Xpaths (и все селекторы) просто определяются как «частная константная строка».
пример кода HomePageSteps (рабочий код):
[Binding]
public class HomePageSteps
{
private IWebDriver _driver;
public HomePageSteps(IWebDriver driver)
{
_driver = driver;
}
private const string LogoTwo = "//img[@alt='xpath']";
[Given(@"I navigation to site")]
public void GivenINavigationToSite()
{
_driver.Navigate().GoToUrl("http://website.com/");
_driver.FindElement(By.XPath(LogoTwo)).Click();
}
}
Но я хочу использовать атрибут webDriver PageFactory для обработки объектов моей страницы. Что я сделал / использовал в других проектах, которые не используют «Nunit 3 Parallelizable».
пример кода (НЕ рабочий код):
[Binding]
public class HomePageSteps
{
private IWebDriver _driver;
public HomePageSteps(IWebDriver driver)
{
_driver = driver;
}
[FindsBy(How = How.XPath, Using = "//img[@alt='xpath']")]
public IWebElement logo { get; set; }
[Given(@"I navigation to site")]
public void GivenINavigationToSite()
{
_driver.Navigate().GoToUrl("http://website.com/");
logo.Click();
}
}
Проблема здесь в том, что «логотип» имеет значение Null. И я не уверен, связана ли эта проблема с ограничением использования Nunit 3 Parallelizable с PageFactory, или с specflow, или с чем-то еще в моем дизайне.
Кто-нибудь может дать некоторые рекомендации?