我正在用UITest用C#编写Xamarin.UITest。
如何在UITest中动态检索设备屏幕的坐标?
发布于 2016-12-22 00:02:15
在Xamarin.UITest中,当您调用app.Query()时,第一个查询结果将返回设备显示。然后可以使用Rect属性获取XY坐标。
下面是一个示例REPL输出,显示app.Query().First()的结果,示例代码将XY坐标分配给您的UITest中的变量。
REPL样本输出

样本码
var windowQuery = app.Query().First();
var topLeftXCoordinate = windowQuery.Rect.X;
var topLeftYCoordinate = windowQuery.Rect.Y;
var topRightXCoordinate = windowQuery.Rect.X + windowQuery.Rect.Width;
var topRightYCoordinate = windowQuery.Rect.Y;
var bottomLeftXCoordinate = windowQuery.Rect.X;
var bottomLeftYCoordinate = windowQuery.Rect.Y + windowQuery.Rect.Height;
var bottomRightXCoordinate = windowQuery.Rect.X + windowQuery.Rect.Width;
var bottomRightYCoordinate = windowQuery.Rect.Y + windowQuery.Rect.Height;
var centerXCoordinate = windowQuery.Rect.CenterX;
var centerYCoordinate = windowQuery.Rect.CenterY;发布于 2019-09-30 14:36:10
布兰登的答案很好,但没有谓词的app.Query()速度慢得令人痛苦,因为它返回数组,而不是IEnumerable<AppResult> --在我目前正在使用的应用程序中,大约需要10秒。
作为一种更快的选择,您可以指定您知道在根附近的元素的自动ID (或其他一些谓词)。例如,假设视图使用的是ContentPage,则可以使用:
var content = app.Query("content").First();
var rect = content.Rect;这在不到1s内完成。
请注意,这不会给您精确的显示大小--它是ContentPage的大小,因此它将比显示大小略小一些(但对于我的用例来说,这很好)。
https://stackoverflow.com/questions/41273873
复制相似问题