【问题标题】:How to read a value from MenuItem in XCUITest?如何从 XCUITest 中的 MenuItem 读取值?
【发布时间】:2021-09-13 20:58:05
【问题描述】:

我有一个看起来像复选框的菜单项:

我想根据当前值单击/不单击它。 如何获取当前值?

我的访问和点击代码如下所示:

let menuBars = application.menuBars
let outlineModeMenuItem = menuBars.menuItems["outline_mode"]
outlineModeMenuItem.click()

元素结构如下:

Attributes: MenuItem, {{0.0, 401.0}, {220.0, 22.0}}, identifier: 'outline_mode', title: 'Outline Mode', Disabled
Element subtree:
 →MenuItem, 0x11e14e410, {{0.0, 401.0}, {220.0, 22.0}}, identifier: 'outline_mode', title: 'Outline Mode', Disabled
Path to element:
 →Application, 0x10f10cf00, pid: 90531, title: 'Vectornator', Disabled
  ↳MenuBar, 0x11e1178a0, {{0.0, 0.0}, {1440.0, 24.0}}
   ↳MenuBarItem, 0x11ce5bad0, {{401.0, 0.0}, {50.0, 24.0}}, title: 'View'
    ↳Menu, 0x11ce5bbe0, {{401.0, 24.0}, {220.0, 682.0}}
     ↳MenuItem, 0x11e14e410, {{0.0, 401.0}, {220.0, 22.0}}, identifier: 'outline_mode', title: 'Outline Mode', Disabled

所以它上面或下面没有任何“复选框”项。 value 因为它是空的:/ UI 从 UICommand.state 读取复选框值,但这似乎没有在 XCUIElement 上公开。

【问题讨论】:

    标签: swift menuitem xctest xcuitest


    【解决方案1】:

    outlineModeMenuItem.isEnabled 是您正在寻找的电话。当它被选中时它应该返回true,当它没有被选中时它应该返回false

    https://developer.apple.com/documentation/xctest/xcuielementattributes 记录了您可能感兴趣的其他属性检查。我之前没有使用过 MenuItem,因此 isSelected 可能就是您要查找的内容。

    【讨论】:

    • 如果这不起作用,您可能需要查看setAccessibilityValue() 函数,该函数可以在点击时动态修改。
    • isEnabled 告诉您按钮是否启用/禁用,即是否变灰。 isSelected 无论值是什么都会返回 false。
    • 据我所知,对于复选框value 是有效的属性,但它不适用于MenuItem。我想我可以试试setAccessibilityValue,但这听起来开销很大,因为我必须修改UICommand 的每次使用...
    • 无赖。我担心最后的手段会成为答案。抱歉,如果我面前没有类似的界面,我无法提供更多帮助。是的,这不是最干净的解决方案。
    • 我只是惊讶于 XCTest 中看似简单的事情有多么困难......
    【解决方案2】:

    到目前为止,一切都表明这是不可能的。

    UICommandaccessibilityValue 但它似乎没有任何作用,实际上失去了价值。这个答案似乎也证实了这一点:https://stackoverflow.com/a/60317536/217022

    我发现的唯一方法是在您知道自己正在运行 UI 测试时修改 title。或者以与UICommand 无关的其他方式公开这些值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-09
      • 1970-01-01
      • 1970-01-01
      • 2017-07-07
      • 2018-12-04
      • 2016-03-19
      • 1970-01-01
      相关资源
      最近更新 更多