Tag: 移动测试

使用Organismo-iOS-Driver获得激动人心的探索应用程序

2.通过旁路将框架注入到现有的“ ipa / app”中 。 绕过是一种很酷的OS X命令行工具,可将Organismo-iOS-Driver注入您可以推迟的任何.IPA或.APP中。 您不需要APP的源代码。 您只需要拥有开发者证书和移动设备。 3.在越狱设备中使用MobileSubstrate。 在越狱的世界中搜索Mobile Substrate来找乐子。 交付用于3D表示的UI 收集UI树的信息非常简单。 它包括迭代每个窗口及其子视图,并获取每个UIView的信息。 //迭代应用程序的窗口 for([UIApplication sharedApplication] .windows中的UIWindow *窗口)… //迭代Windows子视图 对于(UIView * window.subviews中的subView)… 检查ORGUIViewHierarchy.m中的代码。 树信息和屏幕截图可以得到与WDA相同的结果,即屏幕截图和UI树并排表示。 见下图: 但是我们现在可以在App中进行其他操作。 我们可以将UI探索带入一个真正引人注目的地方。 如果每个UI元素都将提供其渲染的图像,我们可以隔离每个元素,并且不仅在它们的X,Y平面而且还沿着Z轴渲染它们 。 好吧,这是一个很酷的主意,事实证明这也是可能的。 这是我们的第一个幸运步骤:UIView具有将自身绘制到图形上下文上并从中创建PNG或JPEG的功能。 -(BOOL)drawViewHierarchy:(CGRect)rect afterScreenUpdates:(BOOL)after 我们还没有到, drawViewHierarchy绘制视图及其所有子视图,这不是我们想要的,我们需要没有子视图的图像。 接下来的三个步骤描述了实现此目标的一种方法: 隐藏所有子视图。 对于(UIView * subview在hiddenViews中){ [subview setHidden:YES]; [view setNeedsDisplay]; } 2.使用drawViewHierarchy将视图绘制到图形文本上。 3.恢复子视图的可见性。 这个把戏行之有效。 参见下面的图片。 我们掌握了每个UI元素及其可视表示形式的信息,现在我们可以进行惊人的3D UI探索。 检查ORGScreenshot.m以查看创建UIVIew图像的代码。 UI树的详细程度 […]

创建Appium所需的功能和WebDriverAgent的设置

我已经写了一篇有关如何在Mac上安装Appium以及应安装哪些依赖项的文章。 本文重点讨论您需要在Appium中指定哪种所需的功能才能在真实的iOS设备上运行测试,以及如何配置WebDriverAgent。 确保已安装libimobiledevice和ios-deploy。 如果没有,那么您需要安装: $ brew install libimobiledevice –HEAD $ npm install -g ios-deploy 运行Appium桌面应用程序并启动服务器。 服务器启动且没有错误时,请转到Appium Inspector,单击“启动Inspector会话”。 在“自动服务器”选项卡中,转到“所需功能”选项卡。 要使用iOS设备,您需要指定以下值: platformName -iOS platformVersion —指定将在其上运行测试的设备版本 deviceName-指定设备名称(设置->常规->关于->名称) automationName-指定自动化引擎。 UIAutomation(iOS 9.2及更低版本)或XCUITest(iOS 9.3及更高版本) 应用程序 —绝对本地路径或远程http URL noReset (true / false)-在单个appium会话期间不重置应用程序状态 udid —指定唯一的设备标识符 xcodeOrgId-指定Apple Developer Team ID,您可以在Apple Developer Portal- >帐户->成员资格-> Team ID中找到它 xcodeSigningId —通常是iPhone开发人员 您可以找到Appium所需功能和特定于XCUITest的功能的列表。 结果,您将获得JSON表示形式中的功能列表。 { “ platformName”:“ iOS”, “ […]

XCTest中的快照测试

“这不是一个错误,这是一个功能”。 几乎每个团队成员都已经学会了这句话。 是的,很奇怪,可以说它存在一定数量的缺陷。 但不是关于显示效果不好的布局。 考虑到交付到商店的时间成本,这对于移动测试尤为重要。 我们有许多类似的工具可用于测试iOS应用程序中的布局。 但是大多数人只是从一个人那里分叉或提出了一个主意。 因此,在此XCNote中,我想谈一谈– iOSSnapshotTestCase 。 该工具最初是在Facebook的领导下作为一个开源项目创建的。 随着时间的流逝,进入存档的计划被传递给了Uber,该项目仍在成功开发中。 最令人高兴的是, iOSSnapshotTestCase继承自XCTestCase ,这显然意味着,我们根本不需要对自动化系统进行任何更改。 我还要注意,我们可以像XCUITest一样在XCUITest中使用iOSSnapshotTestCase。 太好了,让我们尝试。 一开始,我们应该: 在Podfile中添加一个额外的pod: 保存参考快照的功能由位于setUp()中的变量recordMode调节: recordMode = true //保存参考快照 recordMode = false //使用实际验证参考快照 为了对每个测试进行多个检查,我们应该将“ identifier”设置为FBSnapshotVerifyView和FBSnapshotVerifyLayer方法的参数。 如果需要通过XCUITest验证全屏快照,则可能会遇到以下问题:状态栏中会发生冲突(电池,时间等)。 可以解决此问题,尽管以一种有点荒谬的方式进行—在拍摄快照时,剪掉用于状态栏的几个像素。 主要问题是,由于iPhone X系列的状态栏尺寸不标准: 我们可以使用UIImage扩展来实现此拐杖: 此后,为了在所有iPhone机型上正确执行此裁切操作,我们将需要学习如何从测试中确定裁切结果。 为此,我们需要扩展UIDevice : 然后将像这样使用它: 有时我们可能需要验证全屏快照,但特定元素除外。 谁能画画? 还有油漆吗?)现在该重新油漆了,因为我们可以借助“ 着色 ”解决这个问题。 我不是在开玩笑😉。 为此,我们需要: 1.通过创建fill(element:XCUIElement)方法再次扩展UIImage ,该方法将在快照上绘制所选元素: 2.在先前创建的验证方法附近创建一个新方法verifyScreen(不包含元素:XCUIElement) : 综上所述,我想说的是,至少可以在移动设备上使用快照进行测试,并且最多可以加快我们的自动化测试的速度。 阅读完有关快照测试的文章后,如果您有任何疑问或澄清,我们将很乐意为您解答。 您可以在这里找到完成的项目: https://github.com/alter-al/sample_of_ios_snapshot_testing_2048 所以,祝你好运,玩得开心,以后再见(:

XCUITests课程入门复习

我已经在http://testautomationu.applitools.com/上学习了一段时间,当出现了来自Shashikant的有关iOS XCUITests的新课程时,我全力以赴并完成了工作,并获得了第一份证书! 我从事XCUItests已经有好几年了,而错误的想法课程将是多余的,但是男孩我已经学到了很多东西,可以直接帮助我工作。 页面对象的枚举是个绝招,很想看看如何将其扩展到多个屏幕和对象。 XCTContext是一个很好的小技巧,可以提供清晰的报告并分组测试块 Eyes SDK非常简单,可以在几分钟内添加视觉检查,并与组织良好的项目很好地集成。 Travis CI甚至没有Mac版本的付费墙! xcodebuild -list是简洁易用的命令,它总结了所有方案,并在您的项目中构建。 可以删除该测试,而不是删除或最差劲地评论一个不稳定的测试(我认为它会添加到-skip-testing选项中) 我不喜欢的一些东西: 在入门课程中使用BDD样式似乎不合适,特别是因为稍后引入了屏幕对象。 尽管某些项目/团队可能喜欢BDD,但这并不是所有自动化项目的事实。 有一个测验问题答案错误,这影响了我的学分 我们可以从xcodebuild或fastlane中运行BDD或任何其他xcuitest,如本课程后面所述。