C# Xamarin UITest-如何断言元素存在且文本正确
Posted
技术标签:
【中文标题】C# Xamarin UITest-如何断言元素存在且文本正确【英文标题】:C# Xamarin UITest- how to assert that both an element exists and text is correct 【发布时间】:2018-04-13 18:48:54 【问题描述】:场景:
在使用 C#(即 Xamarin UITest、Nunit 等)编写自动化测试时,我想断言元素存在并且该元素的文本是正确的。 (即元素 X 存在,看到的文本是 Y)
Intellisense 告诉我 Assert 是一种选择,但我似乎无法弄清楚实现此目的的方法。
我可以做类似“app.Flash(e => e.Id("TheId"));”的事情,这将向人类用户显示元素闪烁,但我想真正断言它在那里,并向用户呈现正确的文本。
【问题讨论】:
【参考方案1】:这是一个等待页面出现的示例,测试某个元素是否可用,然后测试该元素是否包含某个值。
单一资产测试用例
[Test]
public void StackOverEntry()
// Wait for the page to appear, test to see if some static (always present) element is available
AppResult[] results = app.WaitForElement(c => c.Marked("Welcome to Xamarin Forms!"));
var elementQuery = app.Query(c => c.Marked("SOEntry"));
var elementAvailable = elementQuery.Any();
string elementValue = "";
if (elementAvailable)
elementValue = elementQuery.First().Text;
Assert.IsTrue(elementAvailable && elementValue == "***", "Not available and/or correct");
个别断言测试用例
[Test]
public void StackOverEntry()
// Wait for the page to appear, test to see if some static (always present) element is available
AppResult[] results = app.WaitForElement(c => c.Marked("Welcome to Xamarin Forms!"));
// Test of the element is on the page (via AutomationId in this class)
Assert.NotNull(app.Query(c => c.Marked("SOEntry")).FirstOrDefault());
// Test the the element contains the proper value
Assert.AreEqual("***", app.Query(c => c.Marked("SOEntry")).First().Text);
正在测试 XAML:
<StackLayout Orientation="Vertical">
<Label Text="Welcome to Xamarin Forms!" VerticalOptions="Center" HorizontalOptions="Center" />
<Entry AutomationId="SOEntry" Text="***" />
</StackLayout>
【讨论】:
以上是关于C# Xamarin UITest-如何断言元素存在且文本正确的主要内容,如果未能解决你的问题,请参考以下文章
将 Xamarin.UITest 与 MvvmCross 绑定一起使用
如何使用 Xamarin UITest 滚动到页面/容器的顶部?