Как преобразовать строку (R.id.btn_0) в тип int - Эспрессо - PullRequest
0 голосов
/ 06 июля 2018

Я хочу преобразовать строковый тип в int. Я делаю автоматизацию с помощью эспрессо.

В соответствии с синтаксисом автоматизации эспрессо для нажатия на объект, onView(withid(R.id.btn_0).perform(click())

У меня есть файл json, в котором я сохранил объект,

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

Теперь, когда я читаю btn_0, я получаю строковое значение для объекта btn_0, а withId () принимает int.

Примечание: Integer.parseInt () не будет работать.

Может кто-нибудь помочь мне с этим?

Ответы [ 3 ]

0 голосов
/ 06 июля 2018

Вы можете разобрать имя ресурса в целое число, используя метод 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());
}
0 голосов
/ 12 июля 2019

Вместо передачи всего идентификатора, например «R.id.modeName», передается только «modeName»

окончательный контекстный контекст = InstrumentationRegistry.getTargetContext (); int obj = context.getResources (). getIdentifier ("modeName", "id", context.getPackageName ()); . OnView (withId (OBJ)) выполнить (нажмите ());

0 голосов
/ 06 июля 2018

Ниже обойти, попробуйте это

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

   }

этот обходной путь доступен здесь, пожалуйста, проверьте его: Как мне преобразовать String в int в Java?

...