- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我的一个屏幕有多个文本字段,我可以从不同的其他屏幕登陆到这个屏幕。在每种情况下,我都会将一个或另一个文本字段作为第一响应者。我无法编写测试来确定所需的文本字段是否具有焦点。
当我在控制台中打印文本字段时 -
Output: { TextField 0x131171d40: traits: 146031247360, Focused, {{6.0, 108.3}, {402.0, 35.0}}, value: }
但是我在 XCUIElement 上找不到任何 focus/isFocus 属性。
有办法实现吗?
最佳答案
我参加派对有点晚了 :) 然而,据我转储变量 XCUIElement 所见,它有一个有趣的属性:
property name: hasKeyboardFocus
property type: TB,R
因此您可以通过以下方式检查您的元素是否具有焦点:
let hasFocus = (yourTextField.value(forKey: "hasKeyboardFocus") as? Bool) ?? false
注意:您可以转储具有以下扩展名的任何 NSObject 子类的属性变量:
extension NSObject {
func dumpProperties() {
var outCount: UInt32 = 0
let properties = class_copyPropertyList(self.dynamicType, &outCount)
for index in 0...outCount {
let property = properties[Int(index)]
if nil == property {
continue
}
if let propertyName = String.fromCString(property_getName(property)) {
print("property name: \(propertyName)")
}
if let propertyType = String.fromCString(property_getAttributes(property)) {
print("property type: \(propertyType)")
}
}
}
}
更新:属性转储,Swift 4:*
extension NSObject {
func dumpProperties() {
var outCount: UInt32 = 0
let properties = class_copyPropertyList(type(of: self), &outCount)
for index in 0...outCount {
guard let property = properties?[Int(index)] else {
continue
}
let propertyName = String(cString: property_getName(property))
print("property name: \(propertyName)")
guard let propertyAttributes = property_getAttributes(property) else {
continue
}
let propertyType = String(cString: propertyAttributes)
print("property type: \(propertyType)")
}
}
}
关于ios - 有没有办法找到 XCUIElement 是否有焦点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32897757/
我正在使用 Xcode 7.2.1,并且我已经为我的代码编写了一些单元测试用例。我的代码编译并成功运行,但当我开始测试时,它失败了。 代码如下: if let params = item["param
也许我误解了查询和 xcuielements 的工作原理,但我想遍历查询的结果。 在我的应用程序中,我在应用程序的屏幕上发送了两次短信号码/收到了短信号码。我想检查两个数字是否相同。例如,以下文本显示
我有一个类型为 .Image 和类 XCUIElement 的变量。像这样: var image = app.descendantsMatchingType(.Image).elementAtInde
在我的 UI 测试中,我有这个 XCUIElement : XCUIApplication().staticTexts["提交订单"] 当我打印 debugDescription 时: po prin
在我的 UI 测试中,我使用(缩短)以编程方式创建 UIView let topMarker = UIView.init(frame: CGRect.init()) … topMarker.acces
我在 Xcode 11.1 上观察到 XCUITest 的奇怪行为。我只有一个带有两个 UITextField 的 Storyboard,两个 UITextField 都带有可访问性标识符集。我想在两
在 Swift 中使用 UITextfield 类,您可以执行如下功能: private func signIn() { if emailTextField.text?.charact
在 iOS UITests 上工作时,我发现了 XCUIElement有一个属性,identifier , 这是面对 XCUIElementAttributes .当我调试时,我发现这是一个真正的属性
iOS UITesting时,如何区分两个不同的XCUIElement? 例如,我有两个不同的 UIButton 具有相同的标签字符串“Button”。如何检查它们是否不同? XCUIElement
我的一个屏幕有多个文本字段,我可以从不同的其他屏幕登陆到这个屏幕。在每种情况下,我都会将一个或另一个文本字段作为第一响应者。我无法编写测试来确定所需的文本字段是否具有焦点。 当我在控制台中打印文本字段
背景: 我正在使用 XCode GM 在 iOS 9.0 中进行用户界面级别测试。 问题: XCode GM 中是否有一个命令可以让您看到可访问元素及其关系的“树”?类似于 Appium 中的“页面”
我有一个非常简单的 XCTestCase 实现,它测试按钮上的点击并期望出现 Alert Controller 。问题是 tap() 方法不起作用。在关联按钮的 IBAction 中放置一个断点,我意
在我的 UI 测试中,一些 XCUIElement 的 frame 属性被发现,但不是其他人。 下面使用的可访问性标识符在 Storyboard中设置,app在 setUp() 中初始化如XCUIAp
我正在尝试为我的 iOS 应用程序编写 UI 测试。出于某种原因,我无法点击我的自定义表格 View 单元格。我正在尝试这样做: let app = XCUIApplication() let sta
在 iOS、UITest 上工作时,我如何检测特定的 XCUIElement 是否已被点击? 例如, let app = XCUIApplication() let button1 = app.tab
我创建了一个辅助类 SignUpSetUp 以便登录我的应用程序而不是重复使用代码。在这个类中,我有一个私有(private)函数 waitForElementToAppear 来等待测试套件中的元素
在尝试在 Swift 中实现新的 UI 测试时,我尝试通过以下方式设置文本字段的值: app.textFields["field_name"].setValue(value, forKey: "any
这是我尝试在终端窗口中输入 po print(XCUIApplication().debugDescription) 时打印应用程序的元素结构时的示例 tables, (address code li
我一直在使用这种方法定位 XCUIElements: app.staticTexts["Full Label Text"] 但是如果我只知道标签文本的一部分怎么办?部分标签文本是动态生成的(例如“It
我想找到一个 UIView XCUIElement,但我似乎找不到它。这个 UIView 用于向用户显示某些信息,我需要能够测试它在某些情况下是否在屏幕上。我将 view.userInteractio
我是一名优秀的程序员,十分优秀!