如何解决扩展 Func<AppQuery, AppQuery> 以包含文本值?
我正在尝试遵循此 Besy 实践 approach 并使用应用查询。
例如...
using System;
using Xamarin.UITest;
using Xamarin.UITest.Queries;
namespace ourapp.UITests.Pages
{
// Aliases Func<AppQuery,appQuery> with query
using Query = Func<AppQuery,AppQuery>;
public class SettingsPage : BasePage
{
readonly Query _logoutButton;
protected override PlatformQuery Trait => new PlatformQuery
{
IOS = x => x.Id("settings_title"),Android = x => x.Id("settings_title"),};
public SettingsPage()
{
_logoutButton = x => x.Id("logout_button");
}
public void logout()
{
//
}
}
}
但是,我正在努力确保控件具有特定的文本。
var result = app.Query(x => x.Id("logout_button"))
.Where(x => x.Text.Equals("logout",StringComparison.InvariantCultureIgnoreCase));
但我似乎无法正确使用 FluentQuery 语法...
_logoutButton = x => x.Id("logout_button"),.Where(x => x.Text.Equals("logout",StringComparison.InvariantCultureIgnoreCase));
CS0103: The name 'Where' does not exist in the current context
解决方法
我想它不像我希望的那么严格,我真的想包含两个属性,但我想这是一个非常简单的解决方案。
_logoutButton = x => x.Text("logout");
我不太乐意接受这个,希望有什么建议,这将返回相同的对象并允许两个条件。
编辑:
或者我可以使用一个条件然后断言,这样我就知道我有正确的控制并且它有正确的文本。所以……
protected void AssertControlHasText(Query control,string text)
{
var query = app.Query(control);
var result = query?.FirstOrDefault()?.Text;
Assert.AreEqual(text,result);
}
_logoutButton = x => x.Text("logout");
AssertControlHasText(_logoutButton,"logout");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。