javascript - 如何使用 "if"运算符进行 Appium 测试

标签 javascript appium appium-ios

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

我在 Appium.App 测试中记录了我所做的事情,并添加了按钮是否存在的验证。由于我对 JavaScript 不太熟悉,所以我从 Objective-C 开始。但结果它总是点击 title_I_need 按钮,但我的期望是 else 分支与 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

最佳答案

最简单的方法是使用 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;
    }
}

关于javascript - 如何使用 "if"运算符进行 Appium 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36004961/

相关文章:

javascript - 我的第一个 Jquery 代码有什么问题以及如何完成此事件?

ios - Appium 医生显示错误

java - 在 selenium 中从手机键盘按回车键

ios - 如何在迦太基上安装旧版本

java - 检查在移动屏幕上滑动是否加载新元素

java - Appium:使用 XPath 通过部分 elementId/UID 查找元素

php - 使用 javascript 为 1 台以上打印机进行打印

带/不带引号的 Javascript 对象属性

javascript - 在 JavaScript 中处理可选返回值的最佳方法是什么?

java - 如何解决我的自动化代码中的错误?