我正在尝试通过命令行将值传递给我的 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,或者这是不可能的?
我正在尝试设置我的 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还有其他方法可以检查我不知道的电流吗?
谢谢你!
我已经在表视图中实现了前导和尾随滑动操作。现在,我正在尝试在 XCTest UI 测试中测试它们。
\n\n测试任一方向的常规滑动很简单:
\n\ntableCell.swipeRight()\ntableCell.swipeLeft()\nRun Code Online (Sandbox Code Playgroud)\n\n使用其中之一会导致显示第一个操作按钮,然后我可以.tap()单击该按钮。
然而,测试完全滑动被证明更具挑战性。我已经玩过如何更快或更精确地滑动的这个扩展?
\n\n我还玩过问题Xcode7 ui testing: staticTexts[\xe2\x80\x9cXX\xe2\x80\x9d].swipeRight() swipes not far enough 的答案。
\n\n这两个本质上都是使用XCUIElement\ 的坐标(withNormalizedOffset:)方法从一个点滑动到另一个点,类似于以下内容:
\n\nlet startPoint = tableCell.coordinate(withNormalizedOffset: CGVector.zero)\nlet finishPoint = startPoint.withOffset(CGVector(dx:xOffsetValue, dy:yOffsetValue))\nstartPoint.press(forDuration: 0, thenDragTo: finishPoint)\nRun Code Online (Sandbox Code Playgroud)\n\n我最终得到了一个可以成功执行完全向右滑动的扩展- 但我似乎无法获得完全向左滑动的正确数字。
\n\n我的代码确实执行了向左滑动,但还不够远。我已经尝试过硬编码数字dx:-300 到 300 的硬编码数字。元素宽度是 414。我相信 0 是最左边,414 是最右边,所以我开始使用该大小作为参考。仍然没有喜悦。
我怎样才能让它执行向左完全滑动?
\n\nextension XCUIElement\n{\n enum SwipeDirection {\n case left, right\n }\n\n func longSwipe(_ …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的应用程序中运行 UI 测试,但是一旦模拟器启动,我就会得到:
\n\n无法加载捆绑包 \xe2\x80\x9cAppUITests\xe2\x80\x9d,因为它已损坏或缺少必要的资源。尝试重新安装捆绑包。
\n\n2018-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我的 podfile 看起来像这样:
\n\nplatform :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) 在某个时刻,许多 Web 服务调用都会被调用。我只想等30秒,因为我知道一切都会在这段时间完成。我需要第一个粗略的解决方案。
我尝试了这个,但它引发了一些错误:
tablesQuery.buttons["Button"].tap()
DispatchQueue.main.asyncAfter(deadline: .now() + 30.0) {
let tablesQuery2 = tablesQuery
Run Code Online (Sandbox Code Playgroud)
你有什么主意吗?
我正在尝试创建XCTestCase以在我的大纲视图中测试重新排序(在OS X应用程序中).当我使用UI测试记录功能时,Xcode打印出:
window.outlines.staticTexts["<cell which I want to move>"].click()
Run Code Online (Sandbox Code Playgroud)
我尝试在大纲视图的内部或外部拖动单元格,Xcode生成相同的无用代码.
有谁知道如何在Xcode 7中正确测试拖放?
我有一个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已更改或事件发生.有没有办法触发这个?
我是UI测试写作的新手.
我想知道是否可以知道视图中存在哪些元素.我想知道它们的数量和方式.
我尝试过这样的东西来循环遍历所有元素,但它不起作用.
for element in app.accessibilityElements! {
print(element)
}
Run Code Online (Sandbox Code Playgroud) 寻找一种等待直到页面上不再存在指定元素的帮助编写方法。SWIFT 2.2,XC测试。据您所知,我在这里和编程领域都是新手,感谢您的帮助。
通过UI测试目标运行应用程序时是否可以查看UI层次结构?
我收到一个白色屏幕,上面写着"无法捕获视图层次结构.请查看控制台日志以获取更多信息"
xcode-ui-testing ×10
swift ×7
xcode ×6
ios ×5
xctest ×4
cocoa ×1
cocoapods ×1
xcode7 ×1
xcode7-beta5 ×1
xctestcase ×1