c# - 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; }
解决方案
更新:经过一些研究,我认为你错过了一个电话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);
}
推荐阅读
- abap - 现有 ABAP 文本元素现在格式正确
- google-cloud-logging - 什么是 spanid,在 LogEntrys 中使用它的后果是什么?
- c++ - 派生类的后期分配
- powerbi - DAX/PowerBI - 查找速率并乘以小时
- java - 使用 Spring Integration JAR 时 Spring Batch 未退出
- swift - Core ML:使用 Create 创建模型,工作正常,但如何控制尚未训练的输入?
- elasticsearch - 弹性搜索多字段匹配问题
- ruby-on-rails - Heroku 构建错误:为数据库适配器指定了“sqlite3”,但未加载 gem
- html - 咖啡脚本文件无法正确执行
- html - 为访客注册创建离线网页