我想验证一个元素是否可见取决于它的.hidden属性,但我找不到使用新的Xcode 7 UI测试的有效方法.
我试过了myelement.exists,myelement.hittable但它们似乎没有像我预期的那样工作.我想他们与hidden财产合作.隐藏的元素不应该存在且不可命中......但这不是当前的行为(我可以理解exists行为......但隐藏的元素应该是不可命中的IMO).
还有另一种方法来验证"隐藏"的财产价值吗?
是否可以从命令行界面从iOS应用测试目标运行单个测试用例或单个测试套件,而不是所有测试用例?
您可以使用xcodebuild从命令行运行测试,开箱即用.执行此操作时,将运行所选测试目标中包含的所有测试用例.
您也可以使用Fastlane 扫描,但我相信您只能运行您选择的构建方案的所有测试(如上所述),因此它与xcodebuild没有区别.
您可以使用xctool从Facebook 运行特定测试,但它不使用xcodebuild,并且仅限于在模拟器上运行,而不是实际的iOS测试设备.
我找到了直接运行xctest命令行实用程序的引用,但它似乎是一个未记录的功能,并以DerivedData为目标.UI测试将其*xctest文件放在一个单独的XCTRunner包中,这使事情变得复杂.
我试图UITableView在Xcode 7(beta 3)中使用新的Xcode UI测试框架复制一个pull来刷新
我目前的方法是从表格拖到我能找到的表格下面的任何元素.这可以在表格下面有一个固定项目时使用,UIToolbar或者UITabBar我宁愿不依赖于具有UITabBar或UIToolbar但我无法找到一种方法来执行拉动以刷新/拖动动作而不使用该方法XCUIElement.
func pressForDuration(duration: NSTimeInterval, thenDragToElement otherElement: XCUIElement)
Run Code Online (Sandbox Code Playgroud)

但是当我没有工具栏/标签栏并尝试使用单元格拖动时,它会失败

这是我的代码的相关部分:
func testRefresh() {
//For testing cell
for _ in 0...9 {
addCell()
}
refreshTable()
}
func refreshTable(var tbl: XCUIElement? = nil) {
let app = XCUIApplication()
if tbl == nil {
let tables = app.tables
if tables.count > 0 {
tbl = tables.elementAtIndex(0)
}
}
guard let table = tbl else {
XCTFail("Cannot find a …Run Code Online (Sandbox Code Playgroud) 所以,我已经掌握了现有的项目,并且我正在尝试使用apple提供的这个新的花哨UI测试包来创建一些UI测试.问题是测试目标无法访问任何外部框架(我需要使用其中一个进行一些设置).在构建阶段添加框架和从主目标中复制框架搜索路径不会做任何事情.
经过一天的浏览,我发现只有一件事,那就是"让事情变得有点不同".通过将Bundle Loader和Test Host设置为$(BUILT_PRODUCTS_DIR)/App.app/App,我仍然无法将外部框架导入test.m,但我可以导入为他们自己执行此操作的类.除非没有破坏某些东西,否则一切都会好起来的.通过设置Bundle和Host,我的UI测试无法执行启动方法:
[[[XCUIApplication alloc] init] launch];
Run Code Online (Sandbox Code Playgroud)
它崩溃并出现错误:断言失败:UI测试失败 - 应用程序状态仍未终止.
最后,我可以从设置中删除启动方法并手动触发每个单独的测试,因此每次执行前都会重新启动应用程序,但这个解决方案似乎错了(特别是对于一些较大的项目).有谁知道处理这个问题的正确方法?
我正在开发一个iOS项目,我需要从UI测试目标访问主机应用程序的代码,但我发现它显示链接错误:我尝试时未定义的符号.我发现这个目标的测试主机和捆绑加载器都是空的,所以我将它们设置为我的主机应用程序并且可以通过链接错误.但是,在运行时,调用XCUIApplication.launch()时仍然会失败.有没有人想出如何从这个UI测试目标访问主机应用程序的代码?如果不能这样做,我们就不得不进行所有UI测试,这是非常不稳定的.我们肯定需要在测试场景中使用非UI步骤.我正在使用Swift作为我的项目.
我正在尝试在我的项目中实现一些UI测试.只要我保持简单,一切都很顺利:记录测试用例,添加一些断言,然后运行测试.这很好,但是当我尝试从我的测试中访问应用程序模块时,链接器会抛出一个错误(见下文):
在应用程序源文件中:
func foo() {
assert(true)
}
Run Code Online (Sandbox Code Playgroud)
在UI测试中:
import XCTest
@testable import MyApp
func testExample() {
foo()
}
Run Code Online (Sandbox Code Playgroud)
错误:
体系结构i386的未定义符号:"MyApp.foo() - >()",引用自MyAppUITests.o中的MyAppUITests.MyAppUITests.testExample(MyAppUITests.MyAppUITests)() - >()ld:未找到符号体系结构i386 clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)
架构x86_64的未定义符号:"MyApp.foo() - >()",引用自:MyAppUITests.o中的MyAppUITests.MyAppUITests.testExample(MyAppUITests.MyAppUITests)() - >()ld:找不到符号架构x86_64
我在这里报告了类似的问题:https:
//forums.developer.apple.com/thread/20609
但没有解决方案.对我来说似乎@testable根本无法正常工作.developer.apple.com上的那个人试图通过在设置中添加Test Host和Bundle Loader来解决这个问题,但我不认为这是正确的方法.我认为@testable应该让一切都运转起来,而且现在看起来并不像.任何帮助赞赏!
Apple在Xcode 7中引入了新的UI测试,但是每当测试启动应用程序时我都会遇到困难,它从应用程序之前的数据开始.这意味着测试不能独立,并且可能受到其他测试的影响.
无法访问用户默认值和其他数据,因为运行测试的应用程序无法访问已测试应用程序的捆绑包.脚本也是不可能的,因为它们可以在测试之前或之后运行.并且无法在iOS上执行NSTask以在每个测试套件之前运行脚本.
有没有办法在每个测试套件之前重置应用程序数据?
我想使用Fastlane Snapshot的 Xcode UI测试来制作Cordova应用程序的屏幕截图.基本上,由于我的整个应用程序只是一个Web视图,所有Xcode UI测试助手方法都变得无关紧要,我只想点击特定的点,例如tap(x: 10, y: 10)应该产生点击{10px; 10px}.
这可能很简单,但我无法弄清楚如何做到这一点.
谢谢.
在Xcode(7.2和7.3)中进行 UI测试时,我的测试有时会失败并出现相当普遍的错误:
断言失败:UI测试失败 - 获取元素的属性失败
我倾向于在调用.hittable或.tap()元素时遇到此错误,但我不知道为什么.我已经检查过我正在处理的元素都正确设置了它们的可访问性设置,并且它们所在的任何容器视图都没有启用accessibilty.唉,这似乎没有解决问题.
控制台日志显示:
UI Testing Failure - Failure fetching attributes for element <XCAccessibilityElement: 0x7e68ae50> pid: 89032, context: 4D9272C7-3024-4062-B0FA-E16EF426F17A, payload: {
pid = 89032;
"uid.elementID" = 1432;
"uid.elementOrHash" = 2125772976;
}: Error Domain=XCTestManagerErrorDomain Code=13 "Error copying attributes -25202" UserInfo={NSLocalizedDescription=Error copying attributes -25202}
Run Code Online (Sandbox Code Playgroud)
我已经尝试过搜索并设法发现它已经被记录但是似乎没有当前的解决方案(雷达链接),即使对于Xcode 7.3.
似乎有时如果我重新启动模拟器/设备,则不会发生此错误,但这不是一个好的解决方案.
xcode-ui-testing ×10
ios ×9
xcode7 ×6
swift ×4
ui-testing ×3
xcode ×3
unit-testing ×2
xctest ×2
linker ×1
objective-c ×1
xcode7.1 ×1