如何在 Xcode 中编写涵盖 Facebook 登录的 UI 测试?

2023-12-20

我想在 Xcode 中编写一个 UI 测试,涵盖登录FBDSKLoginKit https://cocoapods.org/pods/FBSDKLoginKit.

然而,Facebook iOS SDK 使用SFSafariViewController https://developers.facebook.com/blog/post/2015/10/29/Facebook-Login-iOS9/呈现给用户以验证她的身份,不幸的是,没有办法与之互动SFSafariViewController在 Xcode 7 的 UI 测试中 https://stackoverflow.com/questions/32763010/any-way-to-automate-sfsafariviewcontroller-in-ui-tests.

任何想法如何测试 Facebook 登录而不交互SFSafariViewController?


Swift 3 Xcode 8 解决方案

 func testFacebookLogin() {
    let app = XCUIApplication()

    // set up an expectation predicate to test whether elements exist
    let exists = NSPredicate(format: "exists == true")

    // as soon as your sign in button shows up, press it
    let facebookSignInButton = app.buttons["Login With Facebook"]
    expectation(for: exists, evaluatedWith: facebookSignInButton, handler: nil)
    facebookSignInButton.tap()

    // wait for the "Confirm" title at the top of facebook's sign in screen
    let confirmTitle = app.staticTexts["Confirm"]
    expectation(for: exists, evaluatedWith: confirmTitle, handler: nil)

    // create a reference to the button through the webView and press it
    let webView = app.descendants(matching: .webView)
    webView.buttons["OK"].tap()

    // wait for your app to return and test for expected behavior here
    self.waitForExpectations(timeout: 10, handler: nil)        
}

扩大:

extension XCUIElement {
    func forceTap() {
        if self.isHittable {
            self.tap()
        } else {
            let coordinate: XCUICoordinate = self.coordinate(withNormalizedOffset: .zero)
            coordinate.tap()
        }
    }
}

经过测试和验证,效果很好!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Xcode 中编写涵盖 Facebook 登录的 UI 测试? 的相关文章

  • iOS后台获取时间限制崩溃

    我已经设置了背景获取 使用大纲NSScreencast 第 92 集 http nsscreencast com episodes 92 background fetch BOOL application UIApplication app
  • Flutter-iOS 当应用程序更新/重新编译时存储的图像丢失

    嗨 请原谅我的英语 也是 flutter iOS 的新手 我在 iOS 上有一个关于 flutter 的应用程序 用户可以从他们的相机和图库中拍摄照片和视频 我正在使用 image picker 包 这没有问题 然后我将其保存在在其应用程序
  • 在 iOS 7 中查看 Core Data 创建的 sqlite 文件时出现问题

    当我尝试访问由核心数据创建的数据库文件时遇到问题 DB 文件位于 Documents 文件夹中 我已将其复制到桌面并使用 Firefox 插件打开它 Hello sqlite文件不包含任何行我有使用核心数据插入值 我正在使用 iOS 7 模
  • iOS FacebookSDK + 解析 SDK + GoogleMaps SDK

    我搜索了很多 然后我意识到 ObjC标记那个GoogleMapSDK需要 但不能很好地配合ParseSDK and FacebookSDK 所以我阅读了所有的 stackoverflow 答案并尝试解决我的问题 问题还没有解决 我执行的步骤
  • 使用 JSONKit 解析 JSON 文件

    我正在构建一个音叉应用程序 货叉应允许最多 12 个预设节距 此外 我希望允许用户选择一个主题 每个主题都会加载一组预设 不必使用所有预设 我的配置文件看起来像这样 theme A3 comment An octave below conc
  • 与 parse-server 和 auth0 的自定义身份验证集成

    我想将 auth0 com 与开源解析服务器结合使用 我当前的方法是通过 iOS 的 Lock 库使用标准登录从 auth0 获取令牌 使用该令牌 我想在解析服务器上调用自定义身份验证方法 该方法检查令牌是否有效 如果有效则将登录用户 我的
  • iOS 上关键 ClientState 警告的默认访问速度缓慢

    在测试我的 iOS 应用程序时 我收到 对关键 ClientState 的默认访问速度慢 耗时 0 034635 秒 容差为 0 020000 警告 它似乎是间歇性发生的 我试图环顾四周看看它是关于什么的 但我并不完全确定 任何帮助表示赞赏
  • iPhone 的翻译器?

    我对为 iPhone 制作一个解释器很感兴趣 这将是一个实验性的想法 但可能会很棒 我喜欢让我自 己的语言适合移动计算和数学的想法 我查阅了很多资料 发现有关 iPhone 上的口译员的信息很复杂 苹果会允许什么 我见过这个应用程序 这是一
  • 在 Swift 中的 For 循环中更改对象的属性

    我创建了一个名为 ShoppingList 的简单结构 struct ShoppingList var shoppingListId NSNumber var title String var groceryItems GroceryIte
  • Interface Builder 更改文本颜色错误?

    这让我发疯了 如果我在界面生成器中选择一个 UITextField 并通过手动输入 R G B 值来更改文本颜色 它将更改整个框架和背景的颜色 但是 如果我使用滑块更改它 它只会按照我想要的方式更改文本颜色 让我认为这是一个错误 其他人也会
  • Grand Central Dispatch (GCD) 调度源标志

    我最近不再使用 to GCD 调度来源 https developer apple com documentation dispatch 1385630 dispatch source create监视文件更改 效果很好 API 也变得更加
  • 按升序对 NSDictionary 进行排序

    我正在尝试排序NSDictionary按升序排列 我正在使用这段代码 NSDictionary valDict self mGetDataDict key rowKey for NSString valueKey in valDict al
  • Mac OSX 10.7.4,Xcode 4.4.1,没有 头文件?

    我正在编写一个程序 它将使用 C 标准库的数组容器来保存一些对象 但是 每当我尝试在程序中包含以下代码行时 include
  • UITableViewCell 内嵌套 UIStackView 内的 UILabel 有时会被截断

    我的一个表设置中有一个表视图单元格 其中包含以下视图层次结构 外部水平 stackview 固定到单元格内容视图的尾部 前部 底部和顶部边缘 右侧标签固定到其父 stackViewHackView 的尾部 前部 底部和顶部边缘 在我的控制器
  • 自动生成的 Swift 桥接标头中“找不到接口声明”

    我当前的项目包含 Swift 和 Objective C 代码 两种类型的源文件都使用另一种语言的代码 当我进行完全清理并重新编译时 几乎每个 Swift 类声明都出现错误Module Swift h 形式为 Cannot find int
  • 如何将nsmutable数组添加到sqlite数据库表中

    如何将nsmutablearray添加到sqlite数据库表中 有人可以帮我编码吗 您可以使用 for int i 0 i lt mutArray count i NSString string mutArray objectAtIndex
  • AdMob 和 DFP 广告联盟之间的区别?

    我正在尝试在我的 iOS 应用程序上显示横幅广告和插页式广告 但现在我对广告网络感到困惑 AdMob 与 DFP 有何不同 哪一种更适合投放广告 有人可以提供帮助吗 提前致谢 AdMob 是一个广告网络 作为发布商 您可以通过展示从网络投放
  • 隐藏 UITableview 单元格

    我正在尝试从 UITableView 中隐藏单元格 就像删除操作一样 但我只想隐藏它以便稍后在相同位置显示它 我知道 UITableViewCell 有一个名为 隐藏 的属性 但是当我使用此属性隐藏单元格时 它会隐藏但没有动画 并且会留下空
  • 如何制作像 Facebook 应用程序一样的登录屏幕?

    如何制作像 Facebook 应用程序一样带有 电子邮件 和 密码 文本字段的登录屏幕 Facebook登入 http extdesenv com wp content uploads 2012 05 facebook login ios
  • iOS 中是否需要 Google App Indexing SDK 才能使用 Google DeepLinking?

    我想用谷歌应用程序索引与我的网页和 iOS 应用程序 我支持通用链接 or 深层链接用谷歌术语 与苹果Search并相应地设置我的网页 From 谷歌文档 https developers google com app indexing i

随机推荐

  • 为什么 eclipse 会创建 .settings 目录?

    我注意到 eclipse 最近创建了一个 settings 目录 里面有 1 个文件 我想知道是否应该将其添加到版本控制中 SVN 另外 这是新的吗 我已经使用eclipse很长一段时间了 但从未注意到它 目录中文件的内容是这样的 Sun
  • 如何在 JavaScript 中向 MVC 模型添加项目?

    我想使用 java 脚本动态地将项目添加到模型中的列表中 如何使 MVC 将新项目绑定到模型 我的模型 public class Garage public string Name get set public string Locatio
  • VBA 变量何时实例化

    我很犹豫要不要问 但我找不到任何文档for VBA 相关 但我不认为是骗人的 C 全局变量什么时候创建 https stackoverflow com questions 19618801 when are global variables
  • 如何忽略 PostgreSQL 窗口函数中的空值?或返回列中的下一个非空值

    假设我有下表 User id COL1 COL2 1 1 1 2 1 2421 1 1 1 3542 2 1 我需要另一列指示每行的下一个非空 COL1 值 因此结果如下所示 User id COL1 COL2 COL3
  • 发生未处理的异常:项目目标不存在

    我写的时候遇到一个问题 ionic cordova prepare android 知道我创建的每个新项目都会发生这种情况 请帮忙 该问题是由缺少所需的构建器引起的angular json文件 要安装这些构建器 请运行 ng add ion
  • Django Tastypie:“通过”关系实现多对多

    我已经对这个问题进行了很多搜索 并在 Stack Overflow 上浏览了一堆相关问题 但似乎没有关于如何 通过 中间模型 或者可能是 实现多对多关系的明确答案我错过了它 我有一个名为 Sample 的模型 它与 Region 具有多对多
  • 如何将 cex 中的点大小转换为绘图单位?

    我试图计算出图中 x 和 y 方向上的点的半径有多大 它们的大小由cex 我想创建一个需要这些信息的绘图函数 在我看来好像cex这将是一个神奇的参数 但没有人真正知道它到底会做什么 我正在创建一个情节png功能 我设置了图表的宽度和高度 我
  • 在cygwin中运行并编译java代码

    我刚刚安装cygwin我想知道如何编译和运行我的java代码cygwin 我的 java 代码在我的桌面上保存在名为 Java 的文件中 假设您安装了适用于 Windows 的 Java SDK 在最简单的情况下 确保 将 java 添加到
  • Flutter:关于数据更改的 Firebase 推送通知

    收到评论后 我已将以下代码部署到我的 firebase 项目中 并且已成功部署 但没有向我发送任何通知 请在此处查看我的 Firebase 实时数据库屏幕截图 以便更好地理解 现已解决 它将仅向一个 ID 即我的管理设备 发送通知 工作代码
  • 将弱学习器组合成强分类器

    如何将少数弱学习器组合成一个强分类器 我知道公式 但问题是 在我读过的每一篇关于 AdaBoost 的论文中 只有公式 没有任何示例 我的意思是 我的学习器和权重都很弱 所以我可以按照公式告诉我的去做 将学习器乘以它的权重 然后加上另一个乘
  • 具有命令绑定的多个参数

    我有一个带有命令绑定并使用 Prism 库的文本块 这是 XAML 部分
  • 关于C# Expression.MakeBinary(),如何使用

    About Expression MakeBinary BinaryExpression MakeBinary ExpressionType binaryType Expression left Expression right bool
  • 如何在SQL SERVER中使用sqb文件恢复数据库

    我有一个带有 sqb 扩展名的文件 例如 clark sqb 我应该如何使用 sqb 文件恢复数据库 谢谢 SQB 文件是使用 RedGate 的 SQL 备份工具创建的 他们提供了一个名为的命令行工具sqb2mtf可用于转换为本机 SQL
  • Java 8 接口中静态方法的用途是什么?

    为什么 Java 8 支持静态方法 下面代码中 main 方法中的两行有什么区别 package sample public class A public static void doSomething System out println
  • 无法加载文件或程序集“Microsoft.Practices.Unity”

    我正在尝试升级Unity版本 2 1 505 2 但是当我运行该应用程序时 我得到以下信息FileLoadException 无法加载文件或程序集 Microsoft Practices Unity 版本 2 0 414 0 文化 中性 P
  • 如何批量限制事件?

    如何批量限制事件 比方说 我想在用户输入时触发文件保存 但执行文件系统访问的频率不超过每 100 毫秒一次 块事件处理程序示例 on
  • 通过使用 mmap() 在进程之间共享内存

    我使用的是Linux 2 6 我有一个环境 其中两个进程通过消息传递模式的简单实现来模拟 使用共享内存 数据交换 我有一个客户端进程 从父进程 即服务器 分叉 它将结构 消息 写入创建的内存映射区域 在分叉之后 message m mmap
  • 枚举的扩展方法,而不是枚举的实例

    我对我的事物有一个枚举 如下所示 public enum Things OneThing AnotherThing 我想为这个枚举编写一个扩展方法 类似于普莱斯的回答在这里 https stackoverflow com questions
  • 使用 liquibase 更新表中的一行

    我希望有人可以验证这是否是正确的语法以及使用 liquibase 填充数据库的正确方法 我想要的只是更改表中一行的值 我这样做是这样的
  • 如何在 Xcode 中编写涵盖 Facebook 登录的 UI 测试?

    我想在 Xcode 中编写一个 UI 测试 涵盖登录FBDSKLoginKit https cocoapods org pods FBSDKLoginKit 然而 Facebook iOS SDK 使用SFSafariViewControl