C# 扩展函数<;AppQuery,AppQuery>;是否包含文本值?
我正试图遵循贝西的做法,使用appquery 例如C# 扩展函数<;AppQuery,AppQuery>;是否包含文本值?,c#,xamarin,xamarin.forms,xamarin.uitest,C#,Xamarin,Xamarin.forms,Xamarin.uitest,我正试图遵循贝西的做法,使用appquery 例如 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
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()
{
//
}
}
}
但我似乎无法正确使用FluentQuery语法
_logoutButton = x => x.Id("logout_button"),
.Where(x => x.Text.Equals("logout",
StringComparison.InvariantCultureIgnoreCase));
CS0103:名称“Where”在当前上下文中不存在
我想它没有我希望的那么严格,我真的想包括两个属性,但我想这是一个非常简单的解决方案
_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");
这不是因为你在
x.Id(“注销按钮”)
之后有一个,而不是)吗?@uvr谢谢,但是在那之前只有一个开始括号。那行结束括号后的逗号呢?@GuruStron不这样认为???@Jules尝试删除它。
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");