c# - 扩展功能包括文本值?
问题描述
我正在尝试遵循这种 Besy Practices方法并使用应用程序查询。
例如...
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");
推荐阅读
- asp.net - nuget bootstrao 和 jquery 包加载
- ssl - Fiddler - 无法解密 SSL 流量 - 未指定 CryptographicException
- c# - 通过 AzureServiceTokenProvider 对 CloudTableClient 进行 Azure 存储身份验证
- git - 在提交之前检查文件并在单独的提交中提取一些文件
- google-apps-script - 带有 HTML 正文格式的电子邮件表预览 + 附件表
- drupal - D7 Panelizer:右侧边栏块不显示
- redis - 如何检查/计算 redis 上的“删除命中率”?
- javascript - 为什么我的折线图过渡看起来很迟钝?
- javascript - CSS 缩放打破了 Microsoft Edge 中的 caretRangeFromPoint
- vim - vim 播放器“u”命令在没有关闭/重新打开的情况下不起作用