我在pagefactory上遇到问题。当我使用静态驱动程序时,它没有问题,但是现在我想并行运行测试,这给我搜索上下文一个空错误。我已经看了一天,没有运气就挣扎了。
public class MainDriver
{
protected IWebDriver _driver { get; set; }
}
class InsurancePage: MainDriver
{
public InsurancePage()
{
PageFactory.InitElements(_driver,this);
}
[FindsBy(How = How.Name, Using = "q")]
[CacheLookup]
public IWebElement signin;
public void ClickOnSignInButton()
{
signin.Click();
signin.SendKeys("Thank God");
}
}
public class AllDrivers: MainDriver
{
public enum Drivers
{ Chrome, firefox, edge, IE}
public void GetRequiredDriver(Drivers mydriver)
{
switch(mydriver)
{
case Drivers.firefox:
_driver = new FirefoxDriver();
_driver.Manage().Window.Maximize();
_driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
// System.Threading.Thread.Sleep(100000);
_driver.Navigate().GoToUrl(ConfigurationManager.AppSettings["url"]);
break;
case Drivers.edge:
_driver = new EdgeDriver();
_driver.Manage().Window.Maximize();
_driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
_driver.Navigate().GoToUrl(ConfigurationManager.AppSettings["url"]);
break;
case Drivers.Chrome:
_driver = new ChromeDriver();
_driver.Manage().Window.Maximize();
_driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
_driver.Navigate().GoToUrl(ConfigurationManager.AppSettings["url"]);
break;
case Drivers.IE:
_driver = new InternetExplorerDriver();
_driver.Manage().Window.Maximize();
_driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
_driver.Navigate().GoToUrl(ConfigurationManager.AppSettings["url"]);
break;
default:
Console.WriteLine("Please select the right driver");
break;
}
}
public void ShutDownDriver()
{
if (_driver !=null)
{
_driver.Close();
}
}
}
[TestFixture]
[Parallelizable]
public class FirefoxHooks: AllDrivers
{
[SetUp]
public void OpenFirefoxdriver()
{
GetRequiredDriver(Drivers.firefox);
}
[TearDown]
public void CloseFirefoxdriver()
{
ShutDownDriver();
}
}
[TestFixture]
[Parallelizable]
public class ChromeHooks : AllDrivers
{
[SetUp]
public void OpenChromedriver()
{
GetRequiredDriver(Drivers.Chrome);
}
[TearDown]
public void CloseChromedriver()
{
ShutDownDriver();
}
}
[TestFixture]
[Parallelizable]
public class EdgeHooks : AllDrivers
{
[SetUp]
public void OpenEdgedriver()
{
GetRequiredDriver(Drivers.edge);
}
[TearDown]
public void CloseEdgedriver()
{
ShutDownDriver();
}
}
[TestFixture]
public class AllTests:FirefoxHooks
{
public IWebDriver _driver;
[Test]
public void LoginTest()
{
InsurancePage insure = new InsurancePage();
insure.ClickOnSignInButton();
}
}
[TestFixture]
public class AllTests2:ChromeHooks
{
[Test]
public void NextTest()
{
}
}
[TestFixture]
public class AllTests3:EdgeHooks
{
[Test]
public void LogoutTest()
{
}
}