我在自动化框架中实现了以下设置:
代码示例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();
}
}
这里的问题是“徽标”是空的。而且我不确定这个问题是否与使用PageFactory,或使用specflow或我设计中的其他内容的'Nunit 3 Parallelizable'的限制有关。
谁能请一些指导?
Page Factory不会初始化非静态驱动程序的原因是它接收静态驱动程序。如果页面的构造函数定义如下:
ChromeDriverService service = ChromeDriverService.CreateDefaultService(startDirectory + @"\Drivers\", "chromedriver.exe");
IWebDriver Static driver = new ChromeDriver(Service);
public HomePageSteps()
{
PageFactory.InitElements(driver, this);
}
它允许您使用已定义的元素。
如果您找到任何其他工作,请告诉我。