gpt4 book ai didi

ios - 如何使用 iOS 上的 Instruments 验证 TableView 中标签的名称?

转载 作者:可可西里 更新时间:2023-11-01 03:42:08 25 4
gpt4 key购买 nike

我正在使用 Xcode“Instruments”工具为 iOS 应用程序构建自动化,我需要验证我在我的应用程序中创建的条目的标签是否正确。

出于某种原因,下面列出的代码不会导致可靠的通过或失败。相反,当它运行时,我在日志中收到“问题”警告,并且测试退出而没有明确关闭。

我想更改我的测试,以便检查我知道正在创建的标签名称,因为我可以在我的自动化运行后使用 AccessibilityViewer 查看它。

如果标签正确,那么我想将测试记录为通过。

我使用 UIATarget.localTarget().logElementTree() 来映射我的元素树,并且在创建条目后使用 AccessibilityInspector 来验证我的标签名称。问题是,我似乎无法获得验证此正确性的语法。

我的辅助功能检查器已验证标签名称是:MyDogs!它具有静态文本的特征并给出 {{114, 0},{166,480}}

的框架

通过查看元素树——我希望我可以将其粘贴到此处,看起来可以沿着这条路径找到标签:

\Target
-+
--\Application
---+
----\Window
-----+
------\TableView
-------+
--------\TableCell: name:MyDogs! rect:{0, 40},{480,166}}
---------|UIAStaticText: name:MyDogs! value:MyDogs! rect:{{0, 40},{480, 166}}
---------|UIAButton: name:story list share rect:{{439, 41},{33, 28}}

谁能告诉我怎么验证这个标签?

我当前的代码如下所示(但不检查标签——因为我不知道如何检查):

var testName = "LoginCreateEntry";

//Start test logging
UIALogger.logStart(testName);

//This is supposed to target the entry that my automation has created.
//The flow goes, run the automation that creates the entry, then verify that the entry
//got created as expected and is visible to the user in the iPhone interface.

var myEntry = target.frontMostApp().mainWindow().scrollViews().staticTexts()["My Dogs!"].value();

var entryName = "My Dogs!";

//Do a bunch of UI automation here to create my entry, which results in the entry
//appearing in the mainWindow with the label: My Dogs!

//If myEntry evaluates to true, then call this test a pass.

if (myEntry === entryName) {
UIALogger.logMessage("My entry was created!");

//Mark the test as a PASS
UIALogger.logPass(testName);
}
else {

UIALogger.logMessage("My entry was not created!");

//Mark the test as a FAIL
UIALogger.logFail(testName);
}

//End test

如有任何反馈或帮助,我们将不胜感激!!

--------------------------------更新------------ --------------------------
感谢你的帮助!我实际上得到了标题的值,并将在下面显示我的解决方案。但无论我做什么,我都无法使通过/失败日志记录功能正常工作——问题是 encountered by others以及。我一直很生气

问题:脚本结束时未明确关闭此测试

测试结束时的消息。我越来越相信这是 Instruments 的一个错误。

这是我更新的测试:

var target = UIATarget.localTarget();
var app = UIATarget.localTarget().frontMostApp();

var testName = "LoginCreateEntry";

//Start test logging
UIALogger.logStart( testName );

//Do lots of gui automation stuff here to create the entry which will appear in my app interface.
//I want to verify that the title I gave the entry matches what appears in the app interface

var window = app.mainWindow();
var tableView = window.tableViews()[0];
var tableGroup = tableView.groups()[0];
var entryName = "My Dogs!";

var myEntry = tableView.cells()[0].name(); //<-- This is what I needed!!!

UIALogger.logMessage("My Story Title: " + myEntry); //Print out entry name in log

if (myEntry === entryName) {

UIALogger.logMessage("My entry was created!");

//Mark the test as a PASS
UIALogger.logPass (testName);

} else {

UIALogger.logMessage("My entry was not created!");

//Mark the test as a FAIL
UIALogger.loFails (testName);

}
//End test

最佳答案

我推荐使用 tuneup_js .使用该库,您可以轻松创建测试用例并检查标签是否存在以及是否等于 My Dogs

你可以这样使用它

test("LoginCreateEntry", function(target,app){
//Create Entry
//....
var myEntry = target.frontMostApp().mainWindow().scrollViews().staticTexts()["My Dogs!"].name();

//Check is Label is equal to My Dogs
//Test "LoginCreateEntry" will fail if myEntry is not equal to My Dogs
assertEquals(myEntry, "My Dogs");
});

附言您应该使用 .name() 而不是 .value() 来获取标签的名称

关于ios - 如何使用 iOS 上的 Instruments 验证 TableView 中标签的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15237506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com