使用 Selenium webdriver C# 为只读字段断言值

Asserting value for read-only field using Selenium webdriver C#

我正在使用带有 NUnit 框架的 Selenium webdriver,但我无法在 html 表单上声明只读文本字段。 Selenium 能够通过 'Id' 找到元素,但无法读取元素中的文本并返回空字符串,我的断言失败了。

下面是应用程序的代码块 -

<td nowrap="" colspan="2">
<input readonly="" tabindex="-1" class="readonly" type="text" 
onfocus="gcurrObj=this;JS_FieldFocus(this, 'frmDetails')" 
onchange="JS_FieldChange(this, 'frmDetails')" id="txtAccountName" 
name="undefined" value="James Bond" size="60" 
style=""></td>

我正在使用以下代码读取,但 selenium 返回的是空白字符串

var AccName = driver.FindElement(By.Id("txtAccountName"));
Assert.That(AccName.Text.Contains("James"));

感谢任何帮助..!!

文本字段中的文本不是 WebElement 的一部分,您无法使用 Text 属性 获取它。要获得它,您需要使用 value 属性

Assert.That(AccName.GetAttribute("value").Contains("James"));

返回空白 string 可能有多种原因。您可以借助 Locator Strategy 来唯一标识元素,然后使用 Assert 如下:

var AccName = driver.FindElement(By.XPath("//input[@class='readonly' and @id='txtAccountName']")).GetAttribute("value");
Assert.That(AccName.Contains("James"));