我正在进行UI单元测试.在图片里.
它们是UILabel,除了长描述是UITextView.
在我想要做的页面断言测试答案中的值.
对于UILabels的答案很好.我可以按照Xcode UI测试示例
这个方法非常容易理解,只需点击元素并将方法更改.tap()为.exist()然后将其括起来assert();
我的问题UITextView比复杂得多UILabel.
我怎样才能获得UITextView断言检查的价值?
func testG(){
let app = XCUIApplication()
app.launch();
app.buttons["Enter"].tap()
app.tables.staticTexts["Bee"].tap()
assert(app.scrollViews.staticTexts["Name :"].exists);
assert(app.scrollViews.staticTexts["Age :"].exists);
assert(app.scrollViews.staticTexts["Specialty :"].exists);
assert(app.scrollViews.staticTexts["Description :"].exists);
assert(app.scrollViews.staticTexts["Bee"].exists);
assert(app.scrollViews.staticTexts["11"].exists);
assert(app.scrollViews.staticTexts["Sky Diver"].exists);
let text = "Bees are flying insects closely related to wasps and ants, known for their role in pollination and, in the case of the best-known bee species, the European honey bee, for producing honey and beeswax. Bees …Run Code Online (Sandbox Code Playgroud) 作为我的UI测试的一部分,我正在生成一个随机字符串作为我的对象的标题.问题是,当通过键盘(使用XCUIElement.typeText())输入此标题时,iOS有时会接受自动建议的值.
例如,我可能希望它键入一个自动生成的"calg"字符串,但自动更正将改为选择"calf".当我稍后尝试使用断言查找此值时,它不存在并且未正确地失败.
有没有办法告诉UI测试他们不应该使用自动更正,或者是否有我可以使用的变通方法?
是否可以对Action Extension目标执行UI测试?我无法使用Action Extension作为"要测试的目标"来创建UI测试目标.我试图从Safari(或照片中)加载动作扩展,尽管Safari /两者都是首选
如果我记录我的互动,我可以得到:
app.icons["Safari"].tap()
然后我可以手动添加:
XCUIDevice.sharedDevice().pressButton(.Home)
在生成的代码之前,但它没有按预期工作(模拟器留在主屏幕上).
我也尝试过:
UIApplication.sharedApplication().openURL(NSURL(string: "https://google.com")!)
但那也没有打开Safari.
我甚至不确定如果它能够启动,我是否能够与Action Extension自动交互,但希望它是可能的.
我想检查一下我的ui上以前缀开头的元素是否存在.如何在Xcode 7 UI测试中实现它?
app.tables["AAA"].staticTexts["Fax: 0049XXXXXXXX"].exists
Run Code Online (Sandbox Code Playgroud)
我有三个元素进入tableview单元格,只有一个元素(第三个或最后一个)以前缀Fax:0049开头.如何查看此元素的当前内容?
我试过了
app.tables["AAA"].cells.staticTexts.elementBoundByIndex(2).exists
Run Code Online (Sandbox Code Playgroud)
但没什么,有些想法?干杯
我从File - > New - > project开始一个新项目
我向ViewController添加了一个按钮.
我打开默认由xcode创建的UITest文件夹.运行测试代码.
它失败:
2016-03-16 12:57:09.191 XCTRunner[3511:150419] Continuing to run tests in the background with task ID 1
t = 10.18s Assertion Failure: UI Testing Failure - Failed to background test runner.
/Users/Bernard/Desktop/ExampleTestApplication/ExampleTestApplicationUITests/test2.m:27: error: -[test2 testExample] : UI Testing Failure - Failed to background test runner.
2016-03-16 12:57:12.789 XCTRunner[3511:150419] *** Terminating app due to uncaught exception '_XCTestCaseInterruptionException', reason: 'Interrupting test'
Run Code Online (Sandbox Code Playgroud)
现在我添加一个断点如下:
现在测试成功了!任何人都可以解释原因吗?
我在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 7.3.1中的UI测试.我可以录制UI测试,但如果我尝试启动它(所有测试或单个测试),我收到以下错误:
无法找到包含测试包路径的测试运行器应用程序/Users/dle/Library/Developer/Xcode/DerivedData/Keecoach-exynmciqyehgmxcfxhkpksrqifsb/Build/Products/Debug-iphonesimulator/DemoKeecoachUITests-Runner.app/PlugIns/DemoKeecoachUITests.app
我真的不明白这个消息,只是看起来跑步者应用程序必须启动测试并且跑步者应用程序不存在.这DemoKeecoachUITests-Runner.app实际上并不存在于我的磁盘上.
我找不到任何其他人在任何地方提到这个问题...如果我在命令行中启动测试,我会得到相同的错误xctool.我在其他计算机上遇到同样的问题,但我没有其他项目的问题,所以它与项目有关.任何线索?
我试图为我的iOS应用程序实现的主屏幕快速操作编写UI测试.因此,当我开始记录UI工作流程时,它不会让我捕获应用程序上的强制触摸事件.相反,它会忽略强制触摸并立即打开应用程序(使其成为点击事件).
有没有可能的方式与最新的Xcode8,我可以UI测试主页快速操作?我试过录制模拟器和实际设备,没有任何作用.FYI当我正常打开应用程序并触发它时,强制触摸操作正常工作.
我正在为我的iOS应用程序构建UI测试套件.我需要在几个不同的设备上测试我的应用程序的功能,但是现在我必须选择我想要的模拟器,运行测试,然后重复.
现在Xcode支持多个并行运行的模拟器,有没有办法同时在多个不同的设备模拟器上运行UI测试?
看看 XCTWaiter().wait(...) 我相信我们可以使用这段代码等待多个期望成为现实
let notHittablePredicate = NSPredicate(format: "hittable == false")
let myExpectation = XCTNSPredicateExpectation(predicate: notHittablePredicate, object: element)
let result = XCTWaiter().wait(for: [myExpectation], timeout: timeout)
//for takes array of expectations
Run Code Online (Sandbox Code Playgroud)
但这在提供的期望中使用 AND 之类的。有没有办法在提供的期望中做 OR。
就像我在登录时有一个用例一样,在点击提交后,我想等待两个元素之一。第一个元素是“您已经在另一台设备上登录。如果继续,您另一台设备上的任何未保存数据将丢失?”。第二个元素是登录后的主屏幕。所以任何人都可以出现。目前我首先等待第一个元素,直到超时发生,然后等待第二个元素。但是我想在这里优化时间并在两个元素中的任何一个存在时继续前进==真。然后我将检查 element1 是否存在,然后点击 YES,然后等待主屏幕,否则只需断言 element2 的存在。
如果问题中有不清楚的地方,请发表评论。谢谢
xcode-ui-testing ×10
ios ×9
xcode ×7
swift ×3
3dtouch ×1
cocoa-touch ×1
objective-c ×1
quickaction ×1
ui-testing ×1
unit-testing ×1
xcode9 ×1
xctest ×1
xcuitest ×1