标签: xcode-ui-testing

XCUITests - 通过命令行传入环境变量

我正在尝试通过命令行将值传递给我的 XCUITest。我知道可以通过以下方式为 XCTest(非 UI)执行此操作:

xcodebuild -verbose test -workspace MyWorkspace.xcworkspace -衍生数据路径衍生数据 -scheme "MyScheme" -configuration Debug SYMROOT="$(pwd)"/build -destination platform="iOS Simulator",name="iPad Air",OS=10.2 -仅测试:UITests/UITests -resultBundlePath 日志文件 MY_SETTING="setting_value" MY_OTHER_SETTING="setting_value_2"

然而,这似乎在我的 XCUITest 中不起作用,因为代码没有进入 #ifdef MY_SETTING 块。是否有另一种方法可以通过命令行将值传递给我的 XCUITest,或者这是不可能的?

xcode ios xcode-ui-testing

3
推荐指数
2
解决办法
7450
查看次数

在 Swift UITest 中检测从右到左的语言

我正在尝试设置我的 UITests 以进行本地化。特别是对于阿拉伯语和任何其他从右到左 (RTL)语言。

就我而言,我有一个swipe(direction: SwipeDirection)值为SwipeDirection( .up, .down, .left, .right) 的函数。

如果我现在想删除一个单元格,我只需这样做,cell.swipe(.left)我UITest就会删除该单元格。由于 UI 在RTL 语言上翻转,因此必须更改为cell.swipe(.right).

我找不到任何检测当前设备语言的方法,也找不到UILayoutDirection。

我已经尝试像这样检查它:

let isLeftToRight = UIView.userInterfaceLayoutDirection(for: UIView().semanticContentAttribute) == .leftToRight
Run Code Online (Sandbox Code Playgroud)

并且

let isLeftToRight = UIApplication.shared.userInterfaceLayoutDirection == .leftToRight
Run Code Online (Sandbox Code Playgroud)

true但无论语言如何,他们俩总是会回来。UILayoutDirection还有其他方法可以检查我不知道的电流吗?

谢谢你!

xcode automated-tests ios swift xcode-ui-testing

3
推荐指数
1
解决办法
1478
查看次数

在 UI 测试中执行完全向左滑动操作?

我已经在表视图中实现了前导和尾随滑动操作。现在,我正在尝试在 XCTest UI 测试中测试它们。

\n\n

测试任一方向的常规滑动很简单:

\n\n
tableCell.swipeRight()\ntableCell.swipeLeft()\n
Run Code Online (Sandbox Code Playgroud)\n\n

使用其中之一会导致显示第一个操作按钮,然后我可以.tap()单击该按钮。

\n\n

然而,测试完全滑动被证明更具挑战性。我已经玩过如何更快或更精确地滑动的这个扩展?

\n\n

我还玩过问题Xcode7 ui testing: staticTexts[\xe2\x80\x9cXX\xe2\x80\x9d].swipeRight() swipes not far enough 的答案。

\n\n

这两个本质上都是使用XCUIElement\ 的坐标(withNormalizedOffset:)方法从一个点滑动到另一个点,类似于以下内容:

\n\n
let startPoint = tableCell.coordinate(withNormalizedOffset: CGVector.zero)\nlet finishPoint = startPoint.withOffset(CGVector(dx:xOffsetValue, dy:yOffsetValue))\nstartPoint.press(forDuration: 0, thenDragTo: finishPoint)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我最终得到了一个可以成功执行完全向右滑动的扩展- 但我似乎无法获得完全向左滑动的正确数字。

\n\n

我的代码确实执行了向左滑动,但还不够远。我已经尝试过硬编码数字dx:-300 到 300 的硬编码数字。元素宽度是 414。我相信 0 是最左边,414 是最右边,所以我开始使用该大小作为参考。仍然没有喜悦。

\n\n

我怎样才能让它执行向左完全滑动?

\n\n
extension XCUIElement\n{\n    enum SwipeDirection {\n        case left, right\n    }\n\n    func longSwipe(_ …
Run Code Online (Sandbox Code Playgroud)

ios xctest swift xcode-ui-testing

3
推荐指数
1
解决办法
2309
查看次数

Xcode 10 UI 测试原因:Cocoapods 找不到图像

我正在尝试在我的应用程序中运行 UI 测试,但是一旦模拟器启动,我就会得到:

\n\n

无法加载捆绑包 \xe2\x80\x9cAppUITests\xe2\x80\x9d,因为它已损坏或缺少必要的资源。尝试重新安装捆绑包。

\n\n

2018-10-05 11:04:59.772078-0500 AppUITests-Runner [53273:1645870](dlopen_preflight(/Users/John/Library/Developer/Xcode/DerivedData/app-ios-client-ewtlrcqcxoeiaudgmthymuhcuxfz/Build/Products/Debug- iphonesimulator/AppUITests-Runner.app/PlugIns/AppUITests.xctest/AppUITests):未加载库:@rpath/libswiftSwiftOnoneSupport.dylib\n 引用自:/Users/John/Library/Developer/Xcode/DerivedData/app-ios-client -ewtlrcqcxoeiaudgmthymuhcuxfz/Build/Products/Debug-iphonesimulator/AppUITests-Runner.app/PlugIns/AppUITests.xctest/Frameworks/Alamofire.framework/Alamofire\n 原因:未找到图像)

\n\n

我的 UITest 是由 Xcode 10 创建的模板,我使用 Cocoapods 1.5.3 和 Swift 4.2

\n\n

我的项目结构:

\n\n
    \n
  • 工作区\n\n
      \n
    • 自定义框架(Podfile 在这里)
    • \n
    • 应用程序 A(这里我运行 UITests)
    • \n
    • 应用程序B
    • \n
  • \n
\n\n

我的 podfile 看起来像这样:

\n\n
platform :ios, '10.0'\n\ninhibit_all_warnings!\nuse_frameworks!\n\ntarget 'App Library' do\n    use_frameworks!\n\n    pod 'Intercom'\n    pod 'Spreedly'\n    pod 'Alamofire'\n    pod 'IGListKit'\n    pod 'CardIO'\n    pod 'SwiftKeychainWrapper'\n    pod 'OneTimePassword', :git =>   'https://github.com/john/OneTimePassword.git', :branch => 'develop'\n    pod 'SnapKit'\n    pod 'DateToolsSwift'\n    pod …
Run Code Online (Sandbox Code Playgroud)

xcode ios cocoapods swift xcode-ui-testing

3
推荐指数
1
解决办法
2677
查看次数

在 Xcode UI 测试中等待 30 秒

在某个时刻,许多 Web 服务调用都会被调用。我只想等30秒,因为我知道一切都会在这段时间完成。我需要第一个粗略的解决方案。

我尝试了这个,但它引发了一些错误:

tablesQuery.buttons["Button"].tap()
        DispatchQueue.main.asyncAfter(deadline: .now() + 30.0) {
            let tablesQuery2 = tablesQuery
Run Code Online (Sandbox Code Playgroud)

你有什么主意吗?

ios xcode-ui-testing

3
推荐指数
1
解决办法
4472
查看次数

Xcode UI测试 - 拖放

我正在尝试创建XCTestCase以在我的大纲视图中测试重新排序(在OS X应用程序中).当我使用UI测试记录功能时,Xcode打印出:

window.outlines.staticTexts["<cell which I want to move>"].click()
Run Code Online (Sandbox Code Playgroud)

我尝试在大纲视图的内部或外部拖动单元格,Xcode生成相同的无用代码.

有谁知道如何在Xcode 7中正确测试拖放?

xcode cocoa swift xcode-ui-testing xcode7-beta5

2
推荐指数
1
解决办法
1720
查看次数

中断后等待应用程序空闲

我有一个ViewController,它将在init上请求访问位置服务

if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined)
{
    [_locationManager requestWhenInUseAuthorization];
}
Run Code Online (Sandbox Code Playgroud)

这会触发"允许应用在您使用应用时访问您的位置?" - 提醒.

我[self addUIInterruptionMonitorWithDescription:handler:]用来对此做出反应.我遇到以下问题:在解除请求对话框后,ui-test不会继续.该警报被驳回,但Xcode中等待应用程序成为空闲,但它看起来像应用程序是空闲的:

t =    67.35s             Wait for app to idle
Run Code Online (Sandbox Code Playgroud)

测试失败,因为应用程序卡在这里.如果我点击模拟器,Xcode记录.

t =    72.27s         Synthesize event
Run Code Online (Sandbox Code Playgroud)

并继续测试.

有没有理由,为什么Xcode试图等待应用程序?解决方法似乎是告诉Xcode UI已更改或事件发生.有没有办法触发这个?

xcode7 xcode-ui-testing

2
推荐指数
1
解决办法
2713
查看次数

UI XCTest,视图中存在的元素

我是UI测试写作的新手.

我想知道是否可以知道视图中存在哪些元素.我想知道它们的数量和方式.

我尝试过这样的东西来循环遍历所有元素,但它不起作用.

for element in app.accessibilityElements! {
        print(element)
    }
Run Code Online (Sandbox Code Playgroud)

xcode xctest swift xcode-ui-testing xctestcase

2
推荐指数
2
解决办法
3936
查看次数

等待直到使用swift和XC测试在屏幕上看不到对象

寻找一种等待直到页面上不再存在指定元素的帮助编写方法。SWIFT 2.2,XC测试。据您所知,我在这里和编程领域都是新手,感谢您的帮助。

xctest swift xctestexpectation xcode-ui-testing

2
推荐指数
2
解决办法
2066
查看次数

运行UI测试时无法捕获视图层次结构

通过UI测试目标运行应用程序时是否可以查看UI层次结构?

我收到一个白色屏幕,上面写着"无法捕获视图层次结构.请查看控制台日志以获取更多信息"

xcode xctest swift xcode-ui-testing

2
推荐指数
1
解决办法
3636
查看次数