UI AUTOMATION:元素如何存在但不可命中?

Posted

技术标签:

【中文标题】UI AUTOMATION:元素如何存在但不可命中?【英文标题】:UI AUTOMATION: How can an element exists but not be hittable? 【发布时间】:2015-11-06 18:57:45 【问题描述】:

好的,所以我在这里画一个空白。第一个条件为真,第二个条件不是当我运行它时。这怎么可能?

我正在使用最新的 xcode,最新的操作系统。

XCUIApplication *app = [[XCUIApplication alloc] init];

XCUIElement *usernameTextField = app.textFields[@"用户名"];

if (usernameTextField.exists) 
    NSLog(@"condition returns true");
else if ( usernameTextField.hittable)
    NSLog(@"doesn't execute");

[用户名文本字段点击]; 当我点击它时应用程序失败: UI 测试活动: 断言失败:UI 测试失败 - 应用未能在 30.0 秒内停顿

有什么想法吗?

【问题讨论】:

如果你希望两个条件都为真,为什么 else 语句中的第二个条件为真?如果第一个为真,第二个肯定不会执行 如果某物存在,但不可命中,可能它被隐藏或为零帧? 【参考方案1】:

Hittblility 是一个手势是否可以使用给定点处理的指标。

鉴于 UI 测试将视图层次结构扁平化为基于查询的系统,这仅意味着如果视图的一部分在屏幕上,则它是可点击的,否则不可点击。

例如,如果我有一个 UITableView 有一堆单元格,那么您可以在屏幕上看到的第一个单元格是可点击的。最后一个因为不在屏幕上而看不到的单元格是不可点击的。

一个元素仍然可以存在于坐标空间中并且不在屏幕上。在前面的示例中,长表视图的最后一个单元格仍然存在,只是无法与之交互。

【讨论】:

以上是关于UI AUTOMATION:元素如何存在但不可命中?的主要内容,如果未能解决你的问题,请参考以下文章

为什么在selenium中使用元素列表是行不通的,但如果我使用WebDriver它就可以工作

如何告诉 gcov 忽略不可命中的 C++ 代码行?

UI Automation Instruments:如何重置应用程序状态?

Instruments:UI Automation:iPhone app - 如何使用 NSRect 的参数点击“null”按钮?

win32-UI Automation

win32-UI Automation