首页 > 解决方案 > assert.istrue 返回空值

问题描述

当我使用 .net 框架和 C# 运行我的 selenium 测试时,我收到消息:对象引用未设置为对象的实例。

{
    landingPage = new LandingPageCode(driver);
    driver = new ChromeDriver();

    driver.Url = ("My URL");

    IWebElement element = landingPage.PageTitle; 

    Assert.IsTrue(element.Displayed);
}

我的基本代码如下,上面引用了它Iwebelement

[FindsBy(How = How.TagName, Using = "PageTitle")] 
public IWebElement PageTitle{ get; set; }

当我按照以下没有元素方面编写测试时,我也会遇到同样的问题。

{
    driver = new ChromeDriver();
    landingPage = new LandingPageCode(driver);

    driver.Url = ("My URL");

    Assert.IsTrue(landingPage.PageTitle.Displayed);
}     

着陆页基本代码页如下:

   [FindsBy(How = How.TagName, Using = "HomePage")]
   public IWebElement PageTitle { get; set; }

标签: c#selenium

解决方案


更新:经过一些研究,我认为你错过了一个电话PageFactory.InitElements(driver, landingPage);

您的代码段强烈建议PageTitle为空。正如@greg-burghardt 建议的那样,需要调用初始化方法landingPage才能填充它。

让我们试试这个:

{
    driver = new ChromeDriver();
    landingPage = new LandingPageCode(driver);

    driver.Url = ("My URL");
    // landing.PageTitle is null here

    PageFactory.InitElements(driver, landingPage);
    Assert.IsNotNull(landingPage.PageTitle, "PageTitle is null. Failed to load page?");
    Assert.IsTrue(landingPage.PageTitle.Displayed);
} 

推荐阅读