【问题标题】:SystemArgumentException:The SearchContext of the locator object cannot be nullSystemArgumentException:定位器对象的 SearchContext 不能为空
【发布时间】:2017-06-21 15:26:46
【问题描述】:

我是 Selenium Webdriver(使用 C#)学习创建 POM 框架的新手。 低于错误 - 代码之前工作正常

消息:System.ArgumentException:定位器对象的 SearchContext 不能为空。

我已经创建了调用另一个类并且调用 pageobject 类的测试用例。

登录的初始步骤工作正常(相同的配置) 下次PageFactory.InitElement 会出错。

public class TC_Sanity
{
    private static ExtentReports extent;
    private static ExtentTest test;
    private static ExtentHtmlReporter htmlReporter;
    public IWebDriver driver;
    public IWebDriver driver1;

    [OneTimeSetUp]
    public void report()
    {
        string CurDate = DateTime.Now.ToString("MMddyy_hhmm");
        htmlReporter = new ExtentHtmlReporter(@"U:\Visual Studio 2015\Projects\VisualLeaseFramework\VisualLeaseFramework\Report\MyReport" + CurDate + ".html");
        htmlReporter.Configuration().Theme = AventStack.ExtentReports.Reporter.Configuration.Theme.Dark;
        htmlReporter.Configuration().DocumentTitle = "TC_Sanity";
        htmlReporter.Configuration().ReportName = "KS-TC-Sanity";
        htmlReporter.Configuration().JS = "$('.brand-logo').text('').append('<img src=U:\\VL-Team\\VLImage.png>')";
        extent = new ExtentReports();

        extent.AttachReporter(htmlReporter);
    }

    [Test]
    public void Test_Sanity()
    {
        test = extent.CreateTest("TC_Sanity");
        TestLogin login = new TestLogin(driver);
        login.loginTest();
        test.Info("Login Successful");

        SelectLeaseMenu leasemenu = new SelectLeaseMenu(driver1);
        leasemenu.leasemenuselect("New");
        test.Info("New Lease Creation Option Selected");

        login.logoutQuit();
        test.Info("Logout and Quit Successful");
    }

[TestFixture]
public class SelectLeaseMenu
{
    private IWebDriver driver;

    public SelectLeaseMenu(IWebDriver driver)
    {
        this.driver = driver;
    }

    [Test]
    public void leasemenuselect(string menu)
    {
        if (menu == "New")
        {
            LandingPage landingpage = new LandingPage(driver);
            Actions action = new Actions(driver);
            IWebElement projMenu = landingpage.LeaseMenu;
            action.MoveToElement(projMenu).Click().Build().Perform();
            System.Console.WriteLine("Moved to Lease Menu");
            Thread.Sleep(1000);
            IWebElement newLease = driver.FindElement(By.LinkText("New"));
            newLease.Click();
        }

public class LandingPage
{
    private IWebDriver driver;

    public LandingPage(IWebDriver browser)
    {
        this.driver = browser;
        PageFactory.InitElements(browser, this);
    }

    [FindsBy(How = How.XPath, Using = "html/body/form/div[3]/div/div[3]/div[1]/input[2]")]
    [CacheLookup]
    public IWebElement Searchbox;

【问题讨论】:

    标签: c# selenium


    【解决方案1】:

    错误表示参数browser 的值为空。我相信这是因为拼写错误,或者您可能忘记为driver1 赋值。 当您将变量driver1 传递给SelectLeaseMenu 时,请参阅下面的代码,它应该是driver

    [Test]
    public void Test_Sanity()
    {
        test = extent.CreateTest("TC_Sanity");
        TestLogin login = new TestLogin(driver);
        login.loginTest();
        test.Info("Login Successful");
    
        SelectLeaseMenu leasemenu = new SelectLeaseMenu(driver1);
        ...
    

    所以你可以通过以下方式修复:

    SelectLeaseMenu leasemenu = new SelectLeaseMenu(driver);
    

    【讨论】:

    • 感谢您的回复 - 我已经更正了您指定的问题,但问题是在导航到租用菜单页面后还有另一个页面对象类(登陆页面)我称错误即将到来试图执行 PageFactory.InitElements(driver, this);代码。
    • @Kush 这一步是否出现错误leasemenu.leasemenuselect("New");
    • 在PageFactory.InitElements(driver, this)这一步没有出现这个错误;在 LandingPage 类中。
    • @Kush 抱歉,我的意思是测试用例中的步骤。你能看一下堆栈跟踪吗?
    • StackTrace: PageFactory.InitElements(Object page, IElementLocator locator, IPageObjectMemberDecorator decorator) PageFactory.InitElements(SearchContext driver, Object page) LandingPage.ctor(IWebDriver driver) SelectLeaseMenu.leasemenuselect(String menu) TC_Sanity.Test_Sanity ()
    猜你喜欢
    • 1970-01-01
    • 2014-12-11
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2014-10-15
    • 2021-02-14
    • 2022-08-20
    相关资源
    最近更新 更多