如何使用“if”运算符进行Appium测试

时间:2016-03-15 07:28:27

标签: javascript appium appium-ios

我需要检查标题为“title_I_need”的按钮是否存在。如果存在按下它,如果不按另一个。所有这些都在javaScript中。

我在Appium.App测试中记录的内容,如果按钮存在,则添加验证。由于我对JavaScript不熟悉,所以我开始使用Objective-C。但结果它总是点击title_I_need按钮,但我的期望是使用other_title按钮分支。

我可以用Appium进行此类检查吗?如果是,我如何使用JavaScript(node.js)?

#import <Selenium/SERemoteWebDriver.h>

@implementation SeleniumTest

-(void) run
{
    SECapabilities *caps = [SECapabilities new];
    [caps addCapabilityForKey:@"appium-version" andValue:@"1.0"];
    [caps setPlatformName:@"iOS"];
    [caps setPlatformVersion:@"8.4"];
    [caps setDeviceName:@"device_name"];
    [caps setApp:@"/path/AppName.app"];
    NSError *error;
    SERemoteWebDriver *wd = [[SERemoteWebDriver alloc] initWithServerAddress:@"0.0.0.0" port:4723 desiredCapabilities:caps requiredCapabilities:nil error:&error];
    //check for element with wrong not existed title to go to else branch
    if ([wd findElementBy:[SEBy name:@"wrong_title"]]){
    [[wd findElementBy:[SEBy name:@"title_I_need"]] click];
  } else {
    [[wd findElementBy:[SEBy name:@"other_title"]] click];
  }
}

@end

1 个答案:

答案 0 :(得分:2)

最简单的方法是使用findElementsBy(注意 s ),它将返回一个数组。然后只需检查数组是否为空。把它放在一个函数中并称之为doesElementExists。对应的java方法是:

public boolean doesElementExists(By by) {
    try {
        List allElements = driver.findElements(by);
        if ((allElements == null) || (allElements.size() == 0))
            return false;
        else
            return true;
    } catch (java.util.NoSuchElementException e) {
        return false;
    }
}