Coded UI 能否断言迷失方向的文本?
Can Coded UI be able to assert the disoriented text?
假设我们编写了一个脚本来断言 HTML 控件的 "InnerText" 属性。
所以我们断言 "Login Now" 并且它通过了。
现在,假设在浏览器上显示为
"Login
Now"
CodedUI 仍然会通过它。
有什么方法可以检查吗?
如果原来的断言检查字符串是Login Now
,但是网页已经改变,浏览器显示两行:
Login
Now
那么断言将失败,因为字符串是 Login\r\nNow
。 (从这个问题来看,字符串可能也有一些 spaces,所以它可能是 Login \r\n Now
。)
至少有两种处理方法。
首先你可以做两个断言。一个是内部文本 包含 Login
,另一个是它包含 Now
。但这会传递字符串 Now Login
也 You must Login Now
并且这可能是错误的。
另一种方法是读取内部文本值,删除任何前导和训练 spaces,将任何中间白色 space 转换为单个 space,然后最后执行断言.如果原始断言类似于
Assert.Equals(innerText, "Login Now");
然后您可以将其替换为:
Assert.Equals(Regex.Replace(innerText.Trim(), "\s+", " "), "Login Now");
假设我们编写了一个脚本来断言 HTML 控件的 "InnerText" 属性。 所以我们断言 "Login Now" 并且它通过了。
现在,假设在浏览器上显示为
"Login
Now"
CodedUI 仍然会通过它。
有什么方法可以检查吗?
如果原来的断言检查字符串是Login Now
,但是网页已经改变,浏览器显示两行:
Login
Now
那么断言将失败,因为字符串是 Login\r\nNow
。 (从这个问题来看,字符串可能也有一些 spaces,所以它可能是 Login \r\n Now
。)
至少有两种处理方法。
首先你可以做两个断言。一个是内部文本 包含 Login
,另一个是它包含 Now
。但这会传递字符串 Now Login
也 You must Login Now
并且这可能是错误的。
另一种方法是读取内部文本值,删除任何前导和训练 spaces,将任何中间白色 space 转换为单个 space,然后最后执行断言.如果原始断言类似于
Assert.Equals(innerText, "Login Now");
然后您可以将其替换为:
Assert.Equals(Regex.Replace(innerText.Trim(), "\s+", " "), "Login Now");