- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试测试是否成功登录后会出现一个新的viewcontroller,但我不太走运,无法理解原因。
测试:
func testLoginButtonPerformsSegueWithValidEmailAndPassword() {
let titleLabel = EarlGrey.select(elementWithMatcher: grey_kindOfClass(MyBillsViewController.self))
let assertion = grey_sufficientlyVisible()
let conditionName = "Wait for title to appear in next MyBillsViewController"
login(email: registeredEmail,
password: password)
let appearedSuccesfully = waitForSuccess(of: assertion,
with: titleLabel,
conditionName: conditionName)
GREYAssertTrue(appearedSuccesfully, reason: "Title Label appeared with correct text")
}
func login(email: String, password: String) {
let emailTextField = grey_accessibilityID(TestAccesID.emailTextField)
let passwordTextField = grey_accessibilityID(TestAccesID.passwordTextField)
let loginButton = grey_accessibilityID(TestAccesID.loginButton)
EarlGrey.select(elementWithMatcher: emailTextField)
.perform(grey_tap()).perform(grey_typeText(email))
EarlGrey.select(elementWithMatcher: passwordTextField)
.perform(grey_tap()).perform(grey_typeText(password))
EarlGrey.select(elementWithMatcher: loginButton).perform(grey_tap())
}
func waitForSuccess(of assertion: GREYMatcher,
with element: GREYElementInteraction,
conditionName: String ) -> Bool {
var success = false
GREYCondition(name: conditionName, block: { () -> Bool in
let errorOrNil = UnsafeMutablePointer<NSError?>.allocate(capacity: 1)
errorOrNil.initialize(to: nil)
element.assert(with: assertion, error: errorOrNil)
success = errorOrNil.pointee == nil
errorOrNil.deinitialize()
errorOrNil.deallocate(capacity: 1)
return success
}).wait(withTimeout: 3.0)
return success
}
最佳答案
异步功能测试是已知的挑战。如果您设置断点,我认为问题在于:
GREYCondition(name: conditionName, block: {
//Do stuff here.
}).wait(withTimeout: 3.0)
return success
行(其中成功=假)之后直接进入
wait
。
XCWaitCompletionHandler
和
XCTestExpectation
:
func expectation(description: String) -> XCTestExpectation
func waitForExpectations(timeout: TimeInterval, handler: XCWaitCompletionHandler? = nil)
关于swift - EarlGrey测试对ViewController的隔离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46237660/
我在使用 EarlGrey 的同步功能时遇到了问题。我正在尝试为我的应用程序创建一个简单的测试示例,基本上检查登录按钮是否显示。 func testExample() { let succes
在 EarlGrey 中,我如何访问我正在与之交互的元素对象,例如我想访问我刚刚点击的 UIButton。 最佳答案 EarlGrey 不返回(指向)元素,因为返回的 View /元素在交互完成后可能
有一个以异步 block 作为参数的方法。 应用程序第一次运行时,会调用此方法,并且有一个覆盖整个屏幕的动画。该方法进行网络调用,可能需要相当长的时间,大约 7 秒左右。当 block 运行时,回调会
EarlGrey 文档 says那个 您必须缩小选择范围,直到它可以唯一标识单个 UI 元素 我的 UI 上有三个 UIView,我需要使用 grey_sufficientlyVisible() 断言
假设我有以下应用程序结构: [View Controller 1] -> tap on next button [View Controller 2] -
如何检查元素是否存在于 UI 层次结构中?如果元素不存在,我不希望 EarlGrey 失败,只是检查它是否存在,我需要这个用于 UITableView,我必须不断滚动到顶部并向下滚动搜索元素,但该元素
每次我运行 EarlGrey 测试时,它都会失败并显示以下消息: 由于错误而无法更改设备方向:Error Domain=com.google.earlgrey.GREYUIThreadExecutor
我正在使用 XCTest 编写非常复杂的 UI 测试,并且最近切换到 EarlGrey,因为它更快并且更可靠 - 测试不会在构建服务器上随机失败,并且测试套件可能需要多达一半的时间小时运行! 有一件事
我在尝试编写使用后退按钮的测试时遇到了一些障碍,希望有人可以用这个为我指明正确的方向。 我的 View 非常标准,我有一个 UINavigation Controller 作为我的 Root View
我正在使用 EarlGrey 框架,我想选择整个文本并从文本字段或搜索栏中捕获它。有办法做到吗? 提前致谢! 最佳答案 您使用 XCTest API 方法提取了值。 正确的方法可以在 EarlGrey
我正在编写测试,我想通过滑动来删除 tableViewCell,从而暴露红色的“删除”编辑操作。我可以很好地滑动单元格,但是当我尝试使用 tapAtPoint 时,问题就出现了。 这直接来自GREYA
通常在 iOS 单元测试中,我们创建新对象,调用我们想要测试的方法,然后验证结果。这是一个独立的程序。测试用例总是从应用程序实例开始运行,但我们不直接访问该实例。 但是,使用 KIF 或 EarlGr
我在尝试使用 Earl Grey 编写 UI 测试时遇到问题,特别是如何在某个 UITabBarItem 上执行点击。 我注意到标签栏项目不允许在 Storyboard 中设置辅助功能 ID 和标签,
作为反例,在KIF action上设置断点时,它只在adding action to dispatching queue过程中停止,这与预期有很大的不同。 我的问题是,我们真的可以打破真正的 Earl
我正在按照 Github Installation 中的说明进行操作集成部分 EarlGrey在我的应用程序中。我已经设置了测试目标并通过将 EarlGrey 拖到我的项目中来添加它,并将其添加为框架
我正在编写一些测试,我需要转到 slider 的中间。我想获得 slider 的最小值和最大值,如下图所示: 这些值可能会改变,所以每次我需要在我的代码中获取它们时。后来,我只想得到这两个值的平均值,
我当时正在开发一个基本的 iOS 教程应用程序,并且认为我也可以开始使用它学习一些 EarlGrey。我正在自动化的测试有这个流程 - 我有一个很大的 UITableView,我用我生成的一些随机词预
看来EarlGrey 在测试我们的APP 时不能使用等待APP 空闲的nice 功能。在每个屏幕上出现此错误: EarlGrey tried waiting for 5.0 seconds for t
我正在编写一个测试,我需要使用 EarlGrey UI 测试框架等待特定 View 显示在我的 UI 中。所以,我查看了文档 here并且正在尝试使用 GREYCondition 来实现这一点。但似乎
我正在尝试编写一个测试来自动显示和隐藏 UI 键盘。但是,每当我尝试进行此类调用时,我需要确保键盘在屏幕上可见。我发现我可以检查 UIRemoteKeyboardWindow 类的元素来执行此操作,但
我是一名优秀的程序员,十分优秀!