使用KIF测试框架时,UIButton不适用于UIControlEventTouchUpInside

时间:2013-01-29 10:37:16

标签: objective-c uibutton uigesturerecognizer kif-framework kif

我尝试使用KIF框架制作一些场景。当我添加例如:

[scenario addStep:[KIFTestStep stepToTapViewWithAccessibilityLabel:@"MyUIButtonAccessibilityLabel"]];
使用accessibilityLabel @" MyUIButtonAccessibilityLabel"

不会为UIButton触发UIControlEventTouchUpInside。

uigesturerecognizer是否会干扰KIF中的UIControlEventTouchUpInside?在KIF中有解决方法吗?

1 个答案:

答案 0 :(得分:1)

我昨天碰到了这个。 stepToTapViewWithAccessibilityLabel对我应用程序中的所有内容都运行良好,但是我遇到了一个绝对无法使用的按钮。

为了解决这个问题,我最终使用了stepToTapScreenAtPoint(我并不特别喜欢),但似乎工作正常。我还在我的类别中添加了一个void initialize方法,以便我可以确定哪个设备在运行时执行测试,并根据它确定我需要点击的位置:

@implementation KIFTestStep (SLAdditions)

static CGPoint kButtonLocation;

+ (void)initialize
{
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        kButtonLocation = CGPointMake(498.0, 622.0);
    else
        kButtonLocation = CGPointMake(247.0, 316.0);
}

+ (NSArray *)stepsToDoSomething
{
    NSMutableArray *steps = [NSMutableArray array];

    [steps addObject:[KIFTestStep stepToWaitForTappableViewWithAccessibilityLabel:@"The Button Label"]];
    [steps addObject:[KIFTestStep stepToTapScreenAtPoint:kButtonLocation]];

    // Verify that tapping succeeded
    [steps addObject:[KIFTestStep stepToWaitForAbsenceOfViewWithAccessibilityLabel:@"The Button Label"]];

    return steps;
}