0
많은 포럼에서 비슷한 문제를 이미 확인했습니다.하지만 내 것과 정확하게 유사하지는 않습니다. 또한 로그인 방법을 기본으로 옮기고 싶지 않습니다.로케이터 객체의 SearchContext는 null이 될 수 없습니다.
코드 :
LoginTest.cs
using test_TestAutomation.PageObjects;
using NUnit.Framework;
namespace test_TestAutomation.TestClasses
{
class LoginTet
{
// public IWebDriver driver;
[Test]
public void LoginSuccessCheck()
{
LoginPage login = new LoginPage();
login.LoginSuccess();
}
}
}
Base.cs
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using NUnit.Framework;
namespace test_TestAutomation.TestClasses
{
class Base
{
public static IWebDriver driver;
[SetUp]
public void SetUp()
{
driver = new ChromeDriver();
driver.Manage().Window.Maximize();
}
[Test]
public void OpenURL()
{
driver.Navigate().GoToUrl("http://www.example.com");
}
[TearDown]
public void TearDown()
{
driver.Close();
}
}
}
LoginPage.cs
using OpenQA.Selenium;
using OpenQA.Selenium.Support.PageObjects;
using test_TestAutomation.TestClasses;
namespace test_TestAutomation.PageObjects
{
public class LoginPage
{
[FindsBy(How = How.Id, Using = "Email")]
public IWebElement LoginEmailTxtLocator;
[FindsBy(How = How.Id, Using = "Password")]
public IWebElement LoginPasswordTxtLocator;
[FindsBy(How = How.CssSelector, Using = "#loginForm > div > div > form > div:nth-child(5) > div > input")]
private IWebElement BtnLogin;
public LoginPage()
{
PageFactory.InitElements(Base.driver, this);
}
public LoginPage LoginSuccess()
{
LoginEmailTxtLocator.SendKeys("[email protected]");
LoginPasswordTxtLocator.SendKeys("xxxxxxx");
BtnLogin.Click();
return this;
}
}
}
예외 :
결과 메시지 : System.ArgumentException이 : 로케이터 개체의 SearchContext이 될 수 없다 널
Stackstace :
at OpenQA.Selenium.Support.PageObjects.PageFactory.InitElements(Object page, IElementLocator locator, IPageObjectMemberDecorator decorator)
at OpenQA.Selenium.Support.PageObjects.PageFactory.InitElements(ISearchContext driver, Object page)
SearchContext는 드라이버 인스턴스를 나타냅니다. 이것은 결코 호출되지 않는 Base의 생성자에서 으로 인스턴스화되는 null입니다. Base – Grasshopper
@Grasshopper의 객체를 만드는 경우 작동해야합니다 - 그 대신에 내가 기지를 확장한다면? 그게 효과가 있니? –
이 작동해야합니다. C#에 대해 많이 알지 못하지만 정적 생성자를 추측해도 작동합니다. – Grasshopper