Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.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更新的XUITest中处理“新功能”弹出_Ios_Swift_Xcuitest - Fatal编程技术网

在iOS更新的XUITest中处理“新功能”弹出

在iOS更新的XUITest中处理“新功能”弹出,ios,swift,xcuitest,Ios,Swift,Xcuitest,我有一套XSuite,可以在我的应用程序中运行一些功能。目前,我有以下功能,可以打开一个键盘,输入一些东西,然后点击搜索,这在这里与Enter相当 功能单击搜索键盘应用程序:XCUI应用程序{ XCTASERTAPP.StaticText[Search].waitForExistencetimeout:10 app.textFields[SearchItemView.SearchTextFieldID].ClearAndIntertextTestData.productData.valid.st

我有一套XSuite,可以在我的应用程序中运行一些功能。目前,我有以下功能,可以打开一个键盘,输入一些东西,然后点击搜索,这在这里与Enter相当

功能单击搜索键盘应用程序:XCUI应用程序{ XCTASERTAPP.StaticText[Search].waitForExistencetimeout:10 app.textFields[SearchItemView.SearchTextFieldID].ClearAndIntertextTestData.productData.valid.styleColor XCUI应用程序。按钮[搜索]。点击 } 然而,在将模拟器升级到iOS 13之后,这个测试将失败,因为现在当键盘第一次被拉上时,我们会看到一个全新的飞行图,解释新的滑动功能

我想我可以在测试代码中添加一个If子句,以便在它第一次出现时处理它,但我想知道是否有人找到了一种方法来禁用模拟机测试中的这类东西:

Init方法中的某些东西会禁用什么是新类型的弹出窗口? 某个聪明的函数可以随时拦截此事件并单击“继续”? 额外的优点:这些自动化测试作为自动化管道的一部分运行。作为其中的一部分,我们假设这些测试是针对一个全新的模拟器集运行的,因此我们不能重用现有的模拟器。具体来说,我们在每次运行之前使用擦除所有内容和设置来清除模拟器。因此,任何解决方案都需要完全可移植,并且不需要手动干预


还有什么吗?

您可以使用xcrun simctl clone在已配置的模拟器的克隆上运行测试

如果您想从头开始创建模拟器,那么在simulator文件夹中添加一个git存储库,按照您的喜好配置它,在您的情况下跳过键盘安装,并使用git状态来了解应该更改什么,以便在脚本中配置模拟器

详细说明:

创建新的模拟器 从其文件夹中创建新的git存储库 按照您喜欢的方式配置模拟器 用git观察模拟器中的变化 基于这些更改,在测试运行之前向CI/CD runner脚本添加步骤
您可以使用xcrun simctl clone在已配置模拟器的克隆上运行测试

如果您想从头开始创建模拟器,那么在simulator文件夹中添加一个git存储库,按照您的喜好配置它,在您的情况下跳过键盘安装,并使用git状态来了解应该更改什么,以便在脚本中配置模拟器

详细说明:

创建新的模拟器 从其文件夹中创建新的git存储库 按照您喜欢的方式配置模拟器 用git观察模拟器中的变化 基于这些更改,在测试运行之前向CI/CD runner脚本添加步骤
我认为测试对话框并在它出现时将其丢弃应该是最好的方法

作为初始工具设置的一部分,您还可以在擦除和重置操作完成后启动apple工具并触发弹出窗口

e、 g

xcrun simctl擦除设备UUID 不带生成测试名称的xcodebuild测试:DismissKeyboardTour destination=deviceuuid 不生成mytestsuite destination=deviceuuid的xcodebuild测试
我认为您只需要在每个测试套件运行时执行一次此操作,例如所有测试,我认为仅测试对话框并在对话框出现时将其取消应该是最好的方法

作为初始工具设置的一部分,您还可以在擦除和重置操作完成后启动apple工具并触发弹出窗口

e、 g

xcrun simctl擦除设备UUID 不带生成测试名称的xcodebuild测试:DismissKeyboardTour destination=deviceuuid 不生成mytestsuite destination=deviceuuid的xcodebuild测试
我想您只需要在每个测试套件运行时执行一次,例如所有测试

您能在回答中添加一些细节吗?我不知道你所说的使用git状态是什么意思,我不知道为了在脚本中配置模拟器,应该更改什么。您的意思是,在进行任何测试之前,我必须运行git status以确定是否已对iOS进行了更改?此方法的缺点:*存储在git中的二进制文件*更新到新os时更新二进制文件,*每个设备都需要一个新的容器。我不建议您将模拟器文件夹保留在任何位置。我建议使用git来跟踪模拟器中的更改是如何在脚本中更快地重复的。这实际上对我的情况没有帮助-我非常清楚我们的模拟器何时会更改,所以这并不奇怪。我只是想弄清楚如何在每次我发现新的变化时,整体地、主动地而不是被动地解决这种情况。你能在回答中添加一些细节吗?我不知道你所说的使用git状态是什么意思,我不知道为了在脚本中配置模拟器,应该更改什么。你的意思是我必须在任何测试之前运行git status来确定iOS是否会改变ha
这种方法的缺点是:*存储在git中的二进制文件*更新到新操作系统时更新二进制文件,*每个设备都需要一个新的容器。我不建议您将模拟器文件夹保留在任何位置。我建议使用git来跟踪模拟器中的更改是如何在脚本中更快地重复的。这实际上对我的情况没有帮助-我非常清楚我们的模拟器何时会更改,所以这并不奇怪。我只是想弄清楚如何整体地、主动地解决这种情况,而不是每次我发现新的变化时都做出反应——这可能是最糟糕的解决方案。它仍然是被动的,即如果iOS 14包含对应用程序焦点的更改,我需要写一些新的东西,但至少它对任何新的键盘更改都有效。问题是苹果似乎不允许我们设置禁用他们的巡更,他们可以随时添加新的巡更。也许是雷达……这可能是最糟糕的解决方案。它仍然是被动的,即如果iOS 14包含对应用程序焦点的更改,我需要写一些新的东西,但至少它对任何新的键盘更改都有效。问题是苹果似乎不允许我们设置禁用他们的巡更,他们可以随时添加新的巡更。也许是雷达。。