c# - Selenium C# SendKeys NullreferenceException 未被用户代码处理
问题描述
我在使用 SendKeys 在文本字段中输入一些文本时遇到问题。我得到错误:
NullreferenceException was unhandled by user code
An exception of type 'System.NullReferenceException' occurred in companyautomation.dll but was not handled in user code
Additional information: Object reference not set to an instance of an object.
在调试期间,我发现输入字段为空。我不知道为什么元素为空,定位器似乎没有工作。它是定位器的简单 ID。我已经检查了检查元素的定位器的 CSS,它是正确的。
错误所在的行,用户名字段元素为空
UsernameField.SendKeys(Username);
我的代码片段是:
public class LoginPage : BasePage
{
public LoginPage(IWebDriver Browser) : base(Browser)
{
}
public void EnterUsername(string Username)
{
UsernameField.SendKeys(Username);
}
[FindsBy(How = How.CssSelector, Using = "#LoginUsername")]
private IWebElement UsernameField { get; set; }
}
public class BasePage : DriverClass
{
protected IWebDriver Driver { get; set; }
public BasePage(IWebDriver driver)
{
Driver = driver;
PageFactory.InitElements(Driver, this);
}
//** All Page Objects **//
#region Page Objects
private LoginPage LoginPage => new LoginPage(Driver);
private Browsers Browser => new Browsers();
#endregion
}
[Binding, Parallelizable]
[Scope(Tag = "Login")]
public class LoginSteps : BasePage
{
public LoginSteps(IWebDriver driver) : base(driver)
{
}
[Given(@"I login with (.*) with password (.*)")]
public void GivenILoginWith_Valid_UserWithPassword(string Username, string Password)
{
LoginPage.EnterUsername(Username);
LoginPage.EnterUserPassword(Password);
}
的HTML:
<input value=""
data-val="true"
data-val-required="Please enter a valid username"
id="LoginUsername"
name="LoginUsername"
ng-blur="vm.analytics.push({ 'category' : 'Login' , 'action' : 'Left Username field', 'label' : 'Language: en'})"
ng-focus="vm.analytics.push({ 'category' : 'Login' , 'action' : 'Enter Username field', 'label' : 'Language: en'})"
placeholder="Username"
title="Username"
type="text">
解决方案
推荐阅读
- android - 从滚动视图中删除任何项目会导致它向上滚动一点
- javascript - javascript中Set和Map的时间复杂度
- arrays - Flutter/Dart - 如何处理包含逗号分隔列表的 Json 数据?
- javascript - 如何解决此仪表板中的超时问题?
- python-2.7 - 如果属性存在则删除标签
- sql - 在 Oracle PL/SQL 中使用 Decode in Loop 语句
- css - Angular 9 在 css 中使用材质图标作为列表
- python - 如何使用 IPython --pdb 调试 Python 脚本?
- ajax - Prestashop 1.7.4.2 - 添加到购物车 ajax 非常慢(TTFB 3 秒)
- c++ - 如何以多线程方式编码位图块?