我在自动化框架中实现了以下设置:
C#Selenium webDriver
IObjectContainer
Specflow
Nunit 3 Parallelizable
Xpath(和所有选择器)简单地定义为'私有const字符串'
代码示例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();
}
}
这里的问题是' logo'一片空白。而且我不确定这个问题是否与使用限制有关' Nunit 3 Parallelizable'使用PageFactory,或使用specflow,或我设计中的其他内容。
有人可以给一些指导吗?
答案 0 :(得分:0)
Page Factory不会初始化非静态驱动程序的原因是它接收静态驱动程序。如果页面的构造函数定义如下:
ChromeDriverService service = ChromeDriverService.CreateDefaultService(startDirectory + @"\Drivers\", "chromedriver.exe");
IWebDriver Static driver = new ChromeDriver(Service);
public HomePageSteps()
{
PageFactory.InitElements(driver, this);
}
它允许您使用已定义的元素。
如果您在此处找到任何其他工作,请与我们联系。