Iphone 尝试使用UI Automation点击UITableViewCell中的UIButton失败,返回“0”;“无法点击”;

Iphone 尝试使用UI Automation点击UITableViewCell中的UIButton失败,返回“0”;“无法点击”;,iphone,ios,xcode,instruments,ui-automation,Iphone,Ios,Xcode,Instruments,Ui Automation,我有一个iPhone应用程序,我正在使用UI自动化进行测试 我在UITableViewCell中有一个按钮,但是当我尝试使用UI自动化点击它时,我得到了以下错误 Script threw an uncaught JavaScript error: target.frontMostApp().mainWindow().scrollViews()[0].elements()[element_name].tableViews()[0].elements().firstWithPredicate(nam

我有一个iPhone应用程序,我正在使用UI自动化进行测试

我在
UITableViewCell
中有一个按钮,但是当我尝试使用UI自动化点击它时,我得到了以下错误

Script threw an uncaught JavaScript error: target.frontMostApp().mainWindow().scrollViews()[0].elements()[element_name].tableViews()[0].elements().firstWithPredicate(name contains[c] 'Brooklyn').elements()["detailsButton"] could not be tapped
我已经在Interface Builder中的按钮上启用了可访问性,并指定了可访问性标签(和标识符)“detailsButton”。我可以检索按钮元素并验证它是否有效。不知什么原因,我就是无法打开它


UIButton是一个圆形矩形按钮,启用了用户交互。感谢您的反馈。

除了使用圆形rect按钮外,您可以使用
ui按钮。此外,您还可以在显示表视图委托方法的控制器类中设置按钮的目标操作

您必须使用
ButtonType=Custom

but=[UIButton buttonWithType:UIButtonTypeCustom];

您必须使用自定义按钮类型。

我不知道您为什么要使用UI自动化。但就我所知,在tableviewcell中添加
UIButton

1) 只需在
UITableViewCell
中添加ui按钮
2) 设置
ui按钮的
标记值并将目标添加到该按钮
3) 在目标按钮方法中,您可以获取
UIButton
对象并在那里执行您的操作。


希望这对您有所帮助。

首先尝试断言如果按钮存在,请使用该按钮进行简单断言。 然后断言按钮是否已启用

您是否尝试过:
target.frontMostApp().mainWindow().scrollViews()[0].elements()[element_name].tableViews()[0].*cells()**.firstWithPredicate(“名称包含[c]'Brooklyn')).elements()[“detailsButton”]


还发布了另一张显示UIATableCell在detailsButton所在位置展开的图片。

我遇到了同样的问题。在我添加了延迟之后,它工作了

UIATarget.localTarget().delay(1);

您可以在整个窗口上调度tap事件:

function tap_from_window(elem) {
    var mainWindow = target.frontMostApp().mainWindow();
    var elemRect = elem.rect();
    var windowRect = mainWindow.rect();

    var xPos = (20 + elemRect.origin.x) / windowRect.size.width;
    var yPos  = (50 + elemRect.origin.y) / windowRect.size.height;

    mainWindow.tapWithOptions({tapOffset:{x:xPos, y:yPos}});    
}

var target = UIATarget.localTarget();
var window = target.frontMostApp().mainWindow();
var tableView = window.scrollViews()[0].elements()[element_name].tableViews()[0];
tap_from_window(tableView.elements().firstWithPredicate(name contains[c] 'Brooklyn'))

像许多与iOS相关的东西一样,我不知道为什么不能直接利用这个元素。我根据这篇文章中的代码修改了上述函数:

您是否尝试过设置类似于目标的延迟。延迟(3);在点击按钮之前?也发布你的代码怎么样,我认为这是一个关于如何将按钮添加到tableviewcell的问题-发布代码以获得更好的响应您可以发布另一张图片并扩展UIATableCell吗?您可能应该解释一些,而不仅仅是发布一行代码。