Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UI应用程序检查器(如Appium中的检查器)是如何工作的?_Ios_Appium_Appium Ios_Appium Desktop - Fatal编程技术网

Ios UI应用程序检查器(如Appium中的检查器)是如何工作的?

Ios UI应用程序检查器(如Appium中的检查器)是如何工作的?,ios,appium,appium-ios,appium-desktop,Ios,Appium,Appium Ios,Appium Desktop,Appium有一种使用检查器检查应用程序视图层次结构的方法。我对自己建造一个感兴趣 我知道的答案是:它使用一些webdriver来完成这项任务。但是怎么做呢? 一个单独的iOS应用程序可以与另一个应用程序进行通信,甚至显示其屏幕,这让我感到困惑 它在引擎盖下是如何工作的?或者iOS应用程序如何与UI检查器通信以发送其屏幕截图和层次结构 一个单独的iOS应用程序可以与另一个应用程序进行通信,甚至显示其屏幕,这让我感到困惑 对!!应用程序不应该能够做到这一点。但有一种特殊的应用程序,专门为测试而构建

Appium有一种使用检查器检查应用程序视图层次结构的方法。我对自己建造一个感兴趣

我知道的答案是:它使用一些webdriver来完成这项任务。但是怎么做呢? 一个单独的iOS应用程序可以与另一个应用程序进行通信,甚至显示其屏幕,这让我感到困惑

它在引擎盖下是如何工作的?或者iOS应用程序如何与UI检查器通信以发送其屏幕截图和层次结构

一个单独的iOS应用程序可以与另一个应用程序进行通信,甚至显示其屏幕,这让我感到困惑

对!!应用程序不应该能够做到这一点。但有一种特殊的应用程序,专门为测试而构建,能够做到这一点

实现这一点的方法是使用苹果的XUITest框架。在XCode中编写XUITest时,它会构建一个特殊的应用程序,可以启动测试应用程序,然后使用XUITest方法与之通信。这些方法允许您检查视图中的图元

为了创建视图树,从根视图开始,迭代子视图,通过树遍历构建一棵树

通常,当您的测试脚本完成时,XCUITest应用程序退出,这意味着您将无法从桌面应用程序访问它,以便在树更新时查看它。如果编写测试脚本以运行无限循环并打开网络端口以与外部进程通信,那么现在可以构建查看器。这正是Appium所做的,所以我建议您查看并使用它

更多信息请访问


[编辑]:是的,Appium使用Feacebook的WebDriverAgent项目作为在应用程序上运行的脚本。所以WebDriverAgent基本上是一个XCUITest脚本,它运行一个服务器,可以在测试期间执行命令。Appium做了大量工作,将其捆绑并打包到一种特殊的配套应用程序中,该应用程序能够访问您的应用程序,将其安装到iOS设备上,然后运行测试。WebDriverAgent有一个在UIHierarchy上迭代并返回整个树的命令。

ok。。因此,询问程序如何工作,现在被认为是一个广泛的问题。投票已经开始了关闭它的过程。哇!选民们能告诉我如何改进这个问题吗?我已经通过了代码,我了解他们的应用程序如何与外部应用程序进行通信谢谢你提供的信息。但是仍然没有关于他们的检查员如何工作的信息。我想他们在WebDriverAgent.bundle文件下隐藏了这个。除非我错了?@ioscallertachethecode.com是的。我以前搜索过这段代码,但它有点棘手。很难再找到它。我建议将webdriveragent作为一个完整的库使用,或者只使用默认的XCUITest方法。WebDriverAgent使用隐藏类并添加缓存层和内容。要使用的默认XCUITest方法是获取应用程序根元素,然后在元素上迭代。children不幸的是,我无法使用它。这与我所发展的是不相容的。谢谢你的回复。但我会让这个问题有点悬而未决,以防有人知道在哪里可以找到代码。