Управление кодом - редактирование и запуск кода
Я пытаюсь написать программу 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;
}
потому что таким образом вы будете уверены, что круглые скобки всегда закрыты.
Надеюсь, что это может помочь.