Управление кодом - редактирование и запуск кода

Я пытаюсь написать программу Selenium Java, которая будет принимать команды из внешнего источника. например, я внешне написал driver.findElement(By.id("username")).sendKeys("FirstName"); в удобной для пользователя форме, чтобы пользователи могли создавать сценарии селена, не зная серверного кода.

Разделив его на 4 раздела:

1) identifier type e.g. id
2) identifier e.g. "username"
3) command type e.g. sendKeys
4) input data e.g. "Firstname"

В моем коде я использую Runtime Compiler для компиляции String как кода (я делаю это, поскольку я могу манипулировать всем кодом как строкой во время его работы), таким образом, я могу иметь небольшой раздел кода для запуска чего-либо, на что ссылается внешний source, поэтому этот код будет работать для sendKeys, click и т. д. и т. д., не требуя каких-либо изменений, если внешний источник создан правильно.

Я умею бегать

 `"   String URL2 = \"id\";"  + "\n" +
        "   String URL3 = \"username\";"  + "\n" +
        "   String URL4 = \"sendKeys\";"  + "\n" +
        "   String URL5 = \"Grabhamn\";"  + "\n" +
        "   System.out.println(\"driver.findElement(By.\"+URL2+\"
  (\"+URL3+\")).\"+URL4+\"(\"+URL5+\");\");" + "\n" +`

Это выводы driver.findElement(By.id(username)).sendKeys(Grabhamn); но моя проблема заключается в том, как мне выполнить этот код во время выполнения компилятора. Кроме того, мне нужен код для вывода в виде
driver.findElement(By.id("username")).sendKeys("Grabhamn"); содержащие кавычки в этих местах, поскольку мне также не удалось это сделать.

Любая информация о том, как это сделать или альтернативные решения будет высоко ценится.

1 ответ

Я не уверен, правильно ли я понял ваш вопрос, не знаю, и успешно ли вы справились со своей задачей, как это было довольно давно. Но для будущих поколений я предложу: а) использовать StringBuilder для создания вашего кода - это рекомендуется для больших фрагментов сгенерированного текста; б) используя символы для добавления

Таким образом, я бы попробовал сделать следующее:

StringBuilder sb = new StringBuilder();
sb.append("driver.findByElement(By.");
sb.append(URL2);
sb.append('(');
sb.append('"');
sb.append(URL3);
sb.append('"');
...
System.out.plintln(sb.toString);

и т.п.

В лучшем случае у меня была бы функция

String parentheses(Object o){
    StringBuilder sb = new StringBuilder();
    sb.append('"');
    sb.append(o.toString());
    sb.append('"');
    return sb.tostring;
}

потому что таким образом вы будете уверены, что круглые скобки всегда закрыты.

Надеюсь, что это может помочь.

Другие вопросы по тегам