swift - 如何在 ui-test 中设置应用程序窗口的大小和位置?
问题描述
一些背景知识:我最近在我的应用程序中实现了拖放行为,我可以在其中从我的 NSTableView 中的 Finder 中拖动项目。现在我想为这个新功能编写一些 ui 测试。
总体思路是将查找器窗口移动到屏幕左侧,将我的应用程序窗口移动到屏幕右侧,然后执行拖放操作。拖放本身不是问题,问题是提到的窗口布局的设置。我找不到调整和移动两个窗口的便捷方法。来自.net,我期望类似app.window.setSize(..)
or app.window.moveTo(...)
。
到目前为止我尝试了什么:
因为我在我的 Mac 上安装了Magnet,所以我尝试了简单的方法并将按键事件(控制+选项+箭头)发送到窗口。这不起作用,发送击键会导致错误哔声。在测试期间手动执行此操作是可行的,所以我不知道是什么阻止了 Magnet 重新排列窗口,但我想这与测试框架有关。我没有深入研究这一点,因为无论如何这都是一个便宜的解决方案。
根据屏幕尺寸拖动应用程序窗口的角,例如对于左侧的窗口,我将角拖动到屏幕的左上角、左下角、中上角和中下角。这要求所有四个角都在屏幕上可见,但这是另一天的问题。该解决方案通常可以工作,但问题是我从应用程序窗口的框架中获得的 y 坐标不是我所期望的。我确实收到了应用程序窗口的位置
app.windows.firstMatch.frame.origin
。x 坐标看起来不错,但 y 坐标完全偏离(与我预期的一样)。
我找不到很多关于origin
orframe
成员的资源。关于如何面对这个问题或在哪里可以找到有关 XCUITest-Framework 及其背后的基本概念的文档的任何想法?在这种情况下,官方文档没有帮助。我只在苹果文档档案中找到了这个关于 macOS(或当时的 OS X)应用程序坐标系的简短解释。
解决方案
推荐阅读
- python-3.x - 如何在 geany 中为不同的文件使用 python2 和 python3 而不必每次都更改它?
- c# - 在c#中区分相同类型的对象以进行检索、比较等的方法是什么
- android - 尝试构建到 android 设备时出错“找不到 com.android.support”
- php - 如何根据mysql查询结果php而不是css隐藏下拉菜单中的元素
- reactjs - 下一个路由器:如何访问多个查询参数?
- twig - 我将如何添加 Twig 功能
- haskell - Haskell 如何评估这个签名?
- python - 用逗号在同一行中打印多个值
- ios - 如何在 Safari for ios 中捕获 selectionStart 和 selectionEnd?
- python - 两个数据帧的所有组合