使用 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"));
我正在使用带有 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"));