如何将字符串(R.id.btn_0)转换为int类型-Espresso

时间:2018-07-06 06:07:22

标签: java android-espresso

我想将字符串类型转换为int。我正在使用浓缩咖啡进行自动化。

根据用于点击对象onView(withid(R.id.btn_0).perform(click())

的espresso自动化语法

我有json文件,我已经在其中存储了对象

"btn_0": {
      "ANDROID": "withId=R.id.btn_0"
  }

现在,当我读取btn_0时,我得到了btn_0对象的字符串值,而withId()则为int。

注意:Integer.parseInt()将不起作用。

有人可以帮我吗?

3 个答案:

答案 0 :(得分:1)

您可以使用Resources.getIdentifier()方法将资源名称解析为整数,我为您准备了一个示例:

@Test
public void parseResourceIdTest() {
    final Context context = InstrumentationRegistry.getTargetContext();

    assertEquals(R.id.btn_0, parseResourceId(context, "btn_0"));
}

public static int parseResourceId(@NonNull Context context, @NonNull String string) {
    return context.getResources().getIdentifier(string, "id", context.getPackageName());
}

答案 1 :(得分:0)

下面是解决方法,请尝试

   while( i < withId.length()) {
      num *= 10;
      num += withId.charAt(i++) - '0'; 

   }

此处提供此工作环境,请检查它:How do I convert a String to an int in Java?

答案 2 :(得分:0)

与其传递整个ID(例如“ R.id.modeName”),不传递“ modeName”

最终上下文上下文= InstrumentationRegistry.getTargetContext();         int obj = context.getResources()。getIdentifier(“ modeName”,“ id”,context.getPackageName());         onView(withId(obj))。perform(click());