let field = UITextField()
if #available(iOS 11.0, *) {
#if targetEnvironment(simulator)
// Do Not enable '.password' or '.newPassword' or 'isSecureTextEntry' text content type on simulator as it ends up with annoying behaviour:
// 'Strong Password' yellow glitch preventing from editing field.
print("Simulator! not setting password-like text content type")
#else
field.textContentType = .password
field.isSecureTextEntry = true
#endif
}
field.placeholder = "Password"
let settingsApp = XCUIApplication(bundleIdentifier: "com.apple.Preferences")
let springboard = XCUIApplication(bundleIdentifier: "com.apple.springboard")
settingsApp.launch()
settingsApp.tables.staticTexts["PASSWORDS"].tap()
let passcodeInput = springboard.secureTextFields["Passcode field"]
passcodeInput.tap()
passcodeInput.typeText("abc\r") // it accepts anything in simulator
settingsApp.tables.cells["PasswordOptionsCell"].buttons["chevron"].tap()
settingsApp.switches["AutoFill Passwords"].tap()
// launch my own app and start UI test
let app = XCUIApplication()
app.launch()
7条答案
按热度按时间toiithl61#
进入模拟器的设置-〉密码-〉打开,然后关闭自动填充密码。
键入任何密码
sf6xfgos2#
有同样的问题。对我有用的是去模拟器的设置-〉密码-〉打开,然后关闭自动填充密码。
dxxyhpgq3#
不确定是否从一开始就是这样,但设置
isSecureTextEntry = true
也足以触发该bug(至少在Xcode 12中是这样。2)的情况。因此,对我有效的变通方法是:
wvyml7n54#
进入模拟器中的密码设置。关闭自动填充(如果它已经关闭,打开并关闭)。点击安全建议并关闭检测受损密码。你可以走了.
3zwjbxry5#
虽然你可以在模拟器中手动更改“自动填充密码”,但这对我在构建服务器上的自动UI测试不起作用,这些测试在每次运行时都会重置,因此是默认的。此外,我们的一个库没有x86_64切片,所以它不能在iOS 13上运行。x模拟器(arm 64-模拟器支持来自iOS 14)。
相反,我发现你可以控制 www.example.com 通过XCUITest,所以我的测试的第一部分禁用了“自动填充密码”,然后运行我自己的测试。
请注意使用两个 www.example.com 和Springboard,因为密码对话框属于Springboard。
我确实尝试使用
.isSelected
测试switch是否打开,然后才更改它,但.isSelected
似乎在用于switch的XCUIElement中损坏。dxxyhpgq6#
您可以使用以下命令在模拟器上禁用密码自动填充:
不确定是否需要所有三个文件,但这是设置应用程序中的开关所改变的。
您可以从
xcrun simctl list
获取SIMULATOR_ID
只在iOS 16上测试过。4
eulz3vhy7#
这是iOS 14的一个bug,只有在使用模拟器时才会出现。
修复它的方法是安装iOS 13。七:
打开Xcode,点击Preferences,然后点击Components。
选择、下载并安装iOS 13。7操作系统在你的模拟器上。
然后再次运行您的应用。您可以在模拟器的顶部标签处检查您的iOS版本。它应该显示正确的一个。