标签: xcode-ui-testing

Xcode 7:app测试和UI测试之间的鸿沟是不可架断的?

Xcode 7†有一种直接测试UI的新方法,包括新的测试目标"iOS UI Testing Bundle"(或"OS X").

在此输入图像描述

在UI测试目标中,似乎没有对构成您的App的模型或类的内置访问.例如[UIApplication sharedApplication],您的UI测试无法调用.这意味着"应用程序测试"和"UI测试"存在于可能不可逾越的鸿沟中.

如前所述这里:

问题是Xcode的UI测试不允许访问实际的应用程序.

问题:

  1. 这个鸿沟可以弥合吗?如果是这样,详细说明如何使用构建和链接器设置以及可能xcodeproj在github上工作.
  2. 在Apple文档中,可以找到明确说明这种鸿沟的地方.

†在撰写本文时,测试版软件.

xcode automated-tests ui-testing xcode7 xcode-ui-testing

12
推荐指数
1
解决办法
957
查看次数

在UI测试中自动化SFSafariViewController的任何方法?

有没有办法自动化SFSafariViewController?我喜欢Xcode 7 UI测试功能,但它似乎不支持SFSafariViewController自动化.我正在测试的一些UI流程需要一个Web浏览器,因此应用程序使用SFSafariViewController使其比Web视图更安全.

mobile-safari coded-ui-tests ios xctest xcode-ui-testing

12
推荐指数
1
解决办法
1027
查看次数

Swift UI测试TextField中的访问字符串

我正在使用集成在Xcode和XCTest中的UI Test Case类来测试应用程序UI.我想测试这样的东西:

    app = XCUIApplication()
    let textField = app.textFields["Apple"]
    textField.typeText("text_user_typed_in")
    XCTAssertEqual(textField.text, "text_user_typed_in")
Run Code Online (Sandbox Code Playgroud)

我已经尝试过textField.value了!字符串方法; 这是行不通的.我也尝试过使用新的异步方法和expectationForPredicate(),它会导致超时.

知道怎么做吗?或者UI测试无法验证这种类型,我只能编写黑盒测试?

ios swift xcode-ui-testing

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

使用Xcode UI测试测试UIWebView

我使用的是新Xcode UI TestingXCTest FrameworkXcode 7 GM.我有一个简单的UIWebView应用程序(它只是一个导航控制器+带有Web视图和按钮的视图控制器),我想检查以下场景:

  1. Web视图加载页面 www.example.com
  2. 用户点击按钮
  3. Web View使用URL加载一些页面: www.example2.com

我想在按下按钮后检查UIWebView中加载了哪个页面.这是否可以通过UI测试立即实现?

其实我得到这样的网页视图:

let app:XCUIApplication = XCUIApplication()
let webViewQury:XCUIElementQuery = app.descendantsMatchingType(.WebView)
let webView = webViewQury.elementAtIndex(0)
Run Code Online (Sandbox Code Playgroud)

uiwebview xctest ios9 xcode-ui-testing

11
推荐指数
1
解决办法
1万
查看次数

Mock API请求Xcode 7 Swift自动UI测试

有没有办法在Swift 2.0中编写自动UI测试时模拟请求.据我所知,UI测试应该独立于其他功能.有没有办法模拟服务器请求的响应,以便测试依赖于响应的UI行为.例如,如果服务器已关闭,则UI测试仍应运行.快速示例,对于登录,如果密码失败则模拟,然后UI应显示警报,但是,如果登录成功,则应显示下一页.

ui-testing ios swift xcode7 xcode-ui-testing

11
推荐指数
1
解决办法
2500
查看次数

如何让Xcode 7保持UI测试目标的日志输出?

我已经开始使用Xcode 7的UI测试功能,当我运行测试时,我会在调试区域的内容窗格中显示测试结果.

但是,一旦测试完成,该输出就会被来自应用程序本身的日志记录所取代.

有没有办法保持两组记录数据可见?

添加一个我想看的例子:

Xcode的屏幕截图显示了我想要将消息发送到stdout/err的位置

xcode logging xcode7 xcode-ui-testing

11
推荐指数
1
解决办法
725
查看次数

XCode 7 UI测试 - 无法在搜索栏中键入文本

以下UI测试代码将成功点击UISearchBar元素.出现软件键盘,搜索栏看起来像是焦点.(即,它会像有人敲击它一样动画)

    let searchBar = XCUIApplication().otherElements["accessibility_label"]

    searchBar.tap()
    searchBar.typeText("search text")
Run Code Online (Sandbox Code Playgroud)

但是,typeText失败:

UI测试失败 - 元素和任何后代都没有键盘焦点.元件:

注意:硬件 - >键盘 - >连接硬件键盘关闭.这解决了文本字段的相同问题,但搜索栏仍然失败.

xctest swift xcode7 xcode-ui-testing

11
推荐指数
3
解决办法
5270
查看次数

有没有办法清除/刷新辅助功能层次缓存

我有一个UI测试,它检查静态文本元素的值,等待几秒钟,然后再次检查以确认更改.起初它没有工作,因为层次结构没有更新.我在日志中注意到了这一点;

使用缓存的辅助功能层次结构

我通过简单地添加一个菜单并打开/关闭它以便合成事件并更新层次结构来为此设置解决方法.

但是,如果有一种方法可以直接清除缓存或强制更新,那就更好了.我还没有在API中找到一个.我错过了什么吗?

有任何想法吗?

这就是我在做的事情;

XCTAssertEqual(app.staticTexts["myText"].label, "Expected 1")
sleep(20)
menu.tap()
sleep(1)
menu.tap()
XCTAssertEqual(app.staticTexts["myText"].label, "Expected 2")
Run Code Online (Sandbox Code Playgroud)

我希望能够做到这一点

XCTAssertEqual(app.staticTexts["myText"].label, "Expected 1")
sleep(20)
app.elements.refresh()
XCTAssertEqual(app.staticTexts["myText"].label, "Expected 2")
Run Code Online (Sandbox Code Playgroud)

xcode-ui-testing

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

不会为与照片相关的警报调用addUIInterruptionMonitor的处理程序

private func acceptPermissionAlert() {

    _ = addUIInterruptionMonitor(withDescription: "") { alert -> Bool in

        if alert.buttons["Don’t Allow"].exists { //doesnt get here second time

            alert.buttons.element(boundBy: 1).tapWhenExists()

            return true
        }

        return false
    }
}
Run Code Online (Sandbox Code Playgroud)

这不适用于:

在此输入图像描述

在应用程序的开头,它是完美的,同时acepting通知的权限,但在这里...不起作用.

你知道为什么吗?

ios swift xcode-ui-testing

11
推荐指数
3
解决办法
5415
查看次数

标签的UITest颜色(不是UI标签)

这是我正在使用的表的图片.

在此输入图像描述

我只想尝试"请求"(灰色)或"草稿"(橙色)的颜色.我能够得到"请求"或"草稿"的实际字符串

var timeSheetStatus = 
    app.tables.element.cells.elementBoundByIndex(0).staticTexts.elementBoundByIndex(1).label
Run Code Online (Sandbox Code Playgroud)

但这只是一个字符串,而不是UIlabel(如果它是UILabel我可以做label.textColor我相信).如何获得此字符串的颜色,以便我可以断言它确实是灰色或橙色?

user-interface ui-testing ios swift xcode-ui-testing

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