我有一个包含大量单元格的表视图,而不是每个单元格都在屏幕上可见.当我检查时
table.cells.staticTexts.matchingIdentifier("My Cell").element.exists
Run Code Online (Sandbox Code Playgroud)
它返回true但屏幕上看不到单元格,我无法点击它.因为每当我点击它时,测试都会失败.
如何检查元素在屏幕上是否可见?或者如何点击不可见的元素?
使用iOS 9.0,Xcode GM和新的Xcuitesting框架.如何从命令行运行特定测试,而不必单击ide中的play?我知道有一个快捷方式来运行所有测试,但我想运行一个测试.
谢谢!
基于我之前讨论的本地化字符串线程,我还有一个问题.以下是链接: 如何在XCode7上对系统按钮进行自动UI测试?
现在,如果我将iOS系统语言切换到另一个,我无法获得本地化的字符串,因为它在不同的包中.我发现另一个线程正在谈论这个: 无法访问UI Test中的字符串本地化(Xcode 7)
如果我将所有本地化字符串从目标应用程序复制到UI测试,它的效果很好.但是对于XIB或故事板中的那些字符串,它们使用对象ID来表示消息,它没有意义且不可读. 如何使对象ID具有人类可读性?
所以我必须先转换它才能知道它在使用NSLocalizedString之前的原因:
NSLocalizedString("Help", bundle: NSBundle(forClass: AClassInYourUITests.self), comment: "")
Run Code Online (Sandbox Code Playgroud)
有没有简单的方法来解决Xcode中的这个问题?如果可能的话,我不想在我的代码中使用这些无意义的字符串,很难知道它是什么.或者我必须编写一个脚本来处理这个问题?
更确切地说,让我们举个例子.我在目标应用的故事板中的一些本地化字符串是:
"U2v-M1-HYu.text" = "???";
"eTC-Zg-zHl.headerTitle" = "??";
Run Code Online (Sandbox Code Playgroud)
如果我想为不同的语言进行UI测试,我不能只将它复制到UI测试包.我需要先将它转换成这样:
"Help" = "???";
"Done" = "??";
Run Code Online (Sandbox Code Playgroud)
欢迎任何建议.
我正在尝试设置我的UI测试目标的语言和区域,不幸的是它似乎不起作用.
我试过两种方式,首先:
我试着用另一种方式:
-AppleLanguages (French)-AppleLocale fr_FR导致UI测试的每种方式仍然以英语发生.而且,当我按下录音按钮时,它会以法语运行...
所以,如果我做错了什么,我很乐意知道!
提前致谢!
我有一个带登录系统的应用程序,所以一旦用户登录了应用程序,我将他们的会话存储在本地数据库中,这会阻止用户每次使用该应用程序时都登录.显然,如果用户尚未登录,则应用程序会显示LoginViewController,但如果应用程序检测到用户的当前会话,HomeViewController则会显示a.
我为我创建了一些测试HomeViewController,它们都运行良好.但是,我已经意识到它们工作正常,因为应用程序当前存储了会话.如果我进入应用程序并注销当前用户,当我运行UI测试时,它们将失败.这是有道理的,因为测试期望HomeViewController显示a,而是LoginViewController显示.
考虑到我还想为其创建UI测试LoginViewController,创建一个解决方案似乎是合理的,在每次测试中,如果用户登录,我都会设置.我怎么能这样做?
我正在尝试在我的项目中设置UI测试.我正在进行UI测试,试图通过我的应用程序登录提示登录.为了确保在测试启动时显示登录提示,我正在尝试运行ServerManager.logout(),这是在项目的代码库中.这将导致在启动时显示登录提示.
import XCTest
class SmokeTest: XCTestCase {
override func setUp() {
super.setUp()
// Put setup code here. This method is called before the invocation of each test method in the class.
// In UI tests it is usually best to stop immediately when a failure occurs.
continueAfterFailure = false
// UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method.
XCUIApplication().launch()
// In UI tests it’s …Run Code Online (Sandbox Code Playgroud) 致力于为swift iOS应用程序构建自动UI测试.该应用程序涉及用于登录Facebook的Web视图.每次在web视图的范围内点击并尝试登录facebook时,如果我尝试使用内置的Xcode UI记录构建UI测试,则会崩溃Xcode.无论Xcode会崩溃,我使用iPhone 6或模拟器都没关系.
我正在使用Xcode 9.以及FBSDKLoginKit和FBSDKCoreKit.
重现步骤:
1)拥有一个带有webview的应用程序
2)点击记录UI测试
3)单击webview范围内的任意位置
这种行为有原因吗?
我是否需要更改Xcode中的设置才能记录Web视图交互?
下面是Xcode崩溃时收到的错误消息.
Process: Xcode [70544]
Path: /Applications/Xcode.app/Contents/MacOS/Xcode
Identifier: com.apple.dt.Xcode
Version: 9.3 (14154)
Build Info: IDEFrameworks-14154000000000000~2
App Item ID: 497799835
App External ID: 826408812
Code Type: X86-64 (Native)
Parent Process: ??? [1]
Responsible: Xcode [70544]
User ID: 501
Date/Time: 2018-05-21 14:04:50.053 -0400
OS Version: Mac OS X 10.13.4 (17E199)
Report Version: 12
Anonymous UUID: 335CE1E7-B5AB-F717-E6D0-019AF52B3708
Sleep/Wake UUID: 7824F1AB-C514-4609-A447-F15EA9C86C84
Time Awake Since Boot: 99000 seconds
Time Since Wake: 1800 seconds
System …Run Code Online (Sandbox Code Playgroud) 由于某些原因,我想在UI测试中覆盖XCTestCase的init函数:
我现在看起来像这样:
import XCTest
class UITest: XCTestCase {
let app = XCUIApplication()
// Helper packages
var helper: UITestHelper!
override func setUp() {
super.setUp()
// Helper package instantiation
helper = UITestHelper(withTestCase: self, forApp: app)
continueAfterFailure = false
app.launch()
}
... tearDown(), tests ....
Run Code Online (Sandbox Code Playgroud)
当我打电话时:
override init() {
super.init()
foo()
}
Run Code Online (Sandbox Code Playgroud)
我懂了 Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
我在Xcode7.3/iOS9.3上进行了UI测试,大约看了1/10
Test Case '-[WhatevUITests.RegistrationUITests testVerifyUnsupportedPhoneNumberAlert]' started.
t = 0.00s Start Test
t = 0.00s Set Up
t = 0.01s Launch me.jackpine.whatev-dev
t = 0.11s Terminate <XCUIApplicationProcess: 0x7ff91a712550 me.jackpine.whatev-dev (94280)>
t = 1.14s Assertion Failure: UI Testing Failure - Failure attempting to launch <XCUIApplicationImpl: 0x7ff91a49fae0 me.jackpine.whatev-dev at /Users/mkirk/src/jackpine/Whatev-iOS/build/Whatev/Build/Products/Debug-iphonesimulator/Whatev Dev.app>, nil token for current process reference <XCUIApplicationProcess: 0x7ff91a624440 me.jackpine.whatev-dev (94333)>
/Users/mkirk/src/jackpine/Whatev-iOS/WhatevUITests/RegistrationUITests.swift:16: error: -[WhatevUITests.RegistrationUITests testVerifyUnsupportedPhoneNumberAlert] : UI Testing Failure - Failure attempting to launch <XCUIApplicationImpl: 0x7ff91a49fae0 me.jackpine.whatev-dev at /Users/mkirk/src/jackpine/Whatev-iOS/build/Whatev/Build/Products/Debug-iphonesimulator/Whatev Dev.app>, nil token for …Run Code Online (Sandbox Code Playgroud) xcode-ui-testing ×10
ios ×9
xcode ×7
swift ×2
xcode7 ×2
fastlane ×1
localization ×1
testing ×1
ui-testing ×1
uitableview ×1
xctest ×1
xcuitest ×1