您可以使用更多参数构建 Xamarin UITest 查询吗?

Posted

技术标签:

【中文标题】您可以使用更多参数构建 Xamarin UITest 查询吗?【英文标题】:Can you build upon a Xamarin UITest Query with further parameters? 【发布时间】:2021-06-29 01:35:29 【问题描述】:

在我创建通用查询和结果调用的基本页面中,为了简单起见,我有一个函数返回基于 androidios 构建的查询。

    ```public Query QueryById(string searchId)
    
        Query tempQuery = null;
        if (_onAndroid)
         tempQuery = x => x.Marked(searchId); 
        else if (_oniOS)
         tempQuery = x => x.Id(searchId); 
        else // should never enter here
         throw new NotSupportedException(); 

        return tempQuery;
    ```

现在我想扩展一个在这里创建的查询,比如添加一个 .Index(2) 甚至抓取该索引下的所有类以抓取该原始容器中的信息集合 .Index(3).Class("LabelRenderer")

有没有办法可以进行查询并扩展它。 除了转换为字符串,然后附加所有内容然后将其放回查询对象之外。

感谢您的任何见解!

【问题讨论】:

你可以尝试使用app.Query(q => q.Id("searchId").Descendant().Index(2).Class("LabelRenderer")之类的东西。 谢谢,但我已经创建了一个查询字符串并将其放入一个 Query 对象中。在不重新创建字符串的初始部分的情况下,我想附加其他内容。示例:我创建Query newQuery = x=>x.Marked("MyGroupNameParameter") 我可以创建一个带有参数的预制查询字符串,并在另一个函数中获得类似AppResult[] = _app.WaitForElement(newQuery); 的结果我想要另一个函数,其中测试人员通过所需组的索引,我希望能够追加到 Query 对象而不重新创建。我可以使用 newQuery 并附加 .Index(x) 吗? 您可以使用x.Marked("MyGroupNameParameter") 作为查询参数。但是如果你创建 newQuery 然后使用 newQuery 的索引,它会返回 AppResult 数组的索引值 (AppResult[])。 请举个例子,因为我不太明白你是如何使用它进入 Class 级别(见上文)的。 【参考方案1】:

下面的代码应该可以工作:

var query = app.Query(q => q.Id("searchId")
        .Descendant()
        .Index(2)
        .Class("LabelRenderer"));

【讨论】:

谢谢,但遗憾的是这不是我想要的。它可能无法......但我正在寻找的是我是否已经为 iOS 或“q .Marked("searchId") for android)。当我深入研究时,我可以附加到这个 Query 对象以扩展它吗?一些原因......我创建了一个可以找到一个按钮的查询,我可以用这个查询点击它,但是现在我还想检查文本或文本颜色或 x,y 坐标或任何东西......所以我可以获取原始查询并将其扩展/附加到它而不重新创建整个查询字符串。

以上是关于您可以使用更多参数构建 Xamarin UITest 查询吗?的主要内容,如果未能解决你的问题,请参考以下文章

构建Xamarin.Forms NuGet

在项目 Xamarin.Forms 中构建时出现错误“值不能为空参数名称:方​​法”

使用 Multidex 构建 xamarin.android 时出现 CREATEMULTIDEXMAINDEXCLASSLIST 错误

如何使用转发 URL 执行 302 重定向

如何在 xamarin 表单上添加室内地图

Xamarin.Forms:与平台无关的应用程序菜单