2016-10-06 2 views
-2

Как выбрать данные из пользовательского поля со списком, в котором выбрать действие, действие робота не работает надежно, используя WebDriver

String value = “Card77”; // value which i need to select from custom box 
 
initRobot(); // initiate robot globally 
 
driver.findElement(By.classname(“custom-combobox”)).click(); // click custom box 
 
Type.word(value); \t //type value in the drop to select 
 

 

 
\t public void initRobot() { 
 
\t \t try { 
 
\t \t \t variables.robot = new Robot(); 
 
\t \t } catch (AWTException e) { 
 
\t \t \t e.printStackTrace(); 
 
\t \t } 
 
\t } 
 

 
public class Type { 
 
\t public static void word(String str) throws Exception{ 
 
\t \t int length = str.length(); 
 
\t \t for (int i = 0; i < length; i++) { \t 
 
\t \t \t char character = str.charAt(i); 
 
\t \t \t Charecter(character); 
 
\t \t } 
 
\t } 
 

 
public static void Charecter(char character) throws AWTException { 
 
\t \t Robot robot = variables.robot; 
 
\t \t 
 
\t \t switch (character) { 
 
\t \t 
 
\t \t case 'a': 
 
\t \t 
 
\t \t \t robot.keyPress(KeyEvent.VK_A); 
 
\t \t robot.keyRelease(KeyEvent.VK_A);break; 
 
\t \t 
 
\t \t case 'b': robot.keyPress(KeyEvent.VK_B); 
 
\t \t robot.keyRelease(KeyEvent.VK_B);break; 
 
\t \t 
 
\t \t case 'c': 
 
\t \t \t robot.keyPress(KeyEvent.VK_C); 
 
\t \t robot.keyRelease(KeyEvent.VK_C); 
 
\t \t break; 
 
\t \t 
 
\t \t case 'd': robot.keyPress(KeyEvent.VK_D); 
 
\t \t robot.keyRelease(KeyEvent.VK_D);break; 
 
\t \t 
 
\t \t case 'e': robot.keyPress(KeyEvent.VK_E); 
 
\t \t robot.keyRelease(KeyEvent.VK_E);break; 
 
\t \t 
 
\t \t case 'f': robot.keyPress(KeyEvent.VK_F); 
 
\t \t robot.keyRelease(KeyEvent.VK_F);break; 
 
\t \t 
 
\t \t case 'g': robot.keyPress(KeyEvent.VK_G); 
 
\t \t robot.keyRelease(KeyEvent.VK_G);break; 
 
\t \t 
 
\t \t case 'h': robot.keyPress(KeyEvent.VK_H); 
 
\t \t robot.keyRelease(KeyEvent.VK_H);break; 
 
\t \t 
 
\t \t case 'i': robot.keyPress(KeyEvent.VK_I); 
 
\t \t robot.keyRelease(KeyEvent.VK_I);break; 
 
\t \t case 'j': robot.keyPress(KeyEvent.VK_J); 
 
\t \t robot.keyRelease(KeyEvent.VK_J);break; 
 
\t \t case 'k': robot.keyPress(KeyEvent.VK_K); 
 
\t \t robot.keyRelease(KeyEvent.VK_K);break; 
 
\t \t case 'l': robot.keyPress(KeyEvent.VK_L); 
 
\t \t robot.keyRelease(KeyEvent.VK_L);break; 
 
\t \t case 'm': robot.keyPress(KeyEvent.VK_M); 
 
\t \t robot.keyRelease(KeyEvent.VK_M);break; 
 
\t \t case 'n': robot.keyPress(KeyEvent.VK_N); 
 
\t \t robot.keyRelease(KeyEvent.VK_N);break; 
 
\t \t case 'o': robot.keyPress(KeyEvent.VK_O); 
 
\t \t robot.keyRelease(KeyEvent.VK_O);break; 
 
\t \t case 'p': robot.keyPress(KeyEvent.VK_P); 
 
\t \t robot.keyRelease(KeyEvent.VK_P);break; 
 
\t \t case 'q': robot.keyPress(KeyEvent.VK_Q); 
 
\t \t robot.keyRelease(KeyEvent.VK_Q);break; 
 
\t \t case 'r': robot.keyPress(KeyEvent.VK_R); 
 
\t \t robot.keyRelease(KeyEvent.VK_R);break; 
 
\t \t case 's': robot.keyPress(KeyEvent.VK_S); 
 
\t \t robot.keyRelease(KeyEvent.VK_S);break; 
 
\t \t case 't': robot.keyPress(KeyEvent.VK_T); 
 
\t \t robot.keyRelease(KeyEvent.VK_T);break; 
 
\t \t case 'u': robot.keyPress(KeyEvent.VK_U); 
 
\t \t robot.keyRelease(KeyEvent.VK_U);break; 
 
\t \t case 'v': robot.keyPress(KeyEvent.VK_V); 
 
\t \t robot.keyRelease(KeyEvent.VK_V);break; 
 
\t \t case 'w': robot.keyPress(KeyEvent.VK_W); 
 
\t \t robot.keyRelease(KeyEvent.VK_W);break; 
 
\t \t case 'x': robot.keyPress(KeyEvent.VK_X); 
 
\t \t robot.keyRelease(KeyEvent.VK_X);break; 
 
\t \t case 'y': robot.keyPress(KeyEvent.VK_Y); 
 
\t \t robot.keyRelease(KeyEvent.VK_Y);break; 
 
\t \t case 'z': robot.keyPress(KeyEvent.VK_Z); 
 
\t \t robot.keyRelease(KeyEvent.VK_Z);break; 
 

 
\t \t case 'A': robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_A); 
 
\t \t robot.keyRelease(KeyEvent.VK_A); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 

 
\t \t case 'B': robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_B); 
 
\t \t robot.keyRelease(KeyEvent.VK_B); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 

 
\t \t case 'C': 
 
\t \t \t 
 
\t \t \t robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_C); 
 

 
\t \t robot.keyRelease(KeyEvent.VK_C); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 

 
\t \t case 'D': robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_D); 
 
\t \t robot.keyRelease(KeyEvent.VK_D); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 

 
\t \t case 'E': robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_E); 
 
\t \t robot.keyRelease(KeyEvent.VK_E); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 

 
\t \t case 'F': robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_F); 
 
\t \t robot.keyRelease(KeyEvent.VK_F); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 

 
\t \t case 'G': robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_G); 
 
\t \t robot.keyRelease(KeyEvent.VK_G); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 

 
\t \t case 'H': robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_H); 
 
\t \t robot.keyRelease(KeyEvent.VK_H); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 

 
\t \t case 'I': robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_I); 
 
\t \t robot.keyRelease(KeyEvent.VK_I); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 

 
\t \t case 'J': robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_J); 
 
\t \t robot.keyRelease(KeyEvent.VK_J); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 

 
\t \t case 'K': robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_K); 
 
\t \t robot.keyRelease(KeyEvent.VK_K); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 

 
\t \t case 'L': robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_L); 
 
\t \t robot.keyRelease(KeyEvent.VK_L); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 

 
\t \t case 'M': robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_M); 
 
\t \t robot.keyRelease(KeyEvent.VK_M); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 

 
\t \t case 'N': robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_N); 
 
\t \t robot.keyRelease(KeyEvent.VK_N); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 

 
\t \t case 'O': robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_O); 
 
\t \t robot.keyRelease(KeyEvent.VK_O); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 

 
\t \t case 'P': robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_P); 
 
\t \t robot.keyRelease(KeyEvent.VK_P); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 

 
\t \t case 'Q': robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_Q); 
 
\t \t robot.keyRelease(KeyEvent.VK_Q); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 

 
\t \t case 'R': robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_R); 
 
\t \t robot.keyRelease(KeyEvent.VK_R); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 

 
\t \t case 'S': robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_S); 
 
\t \t robot.keyRelease(KeyEvent.VK_S); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 

 
\t \t case 'T': robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_T); 
 
\t \t robot.keyRelease(KeyEvent.VK_T); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 

 
\t \t case 'U': robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_U); 
 
\t \t robot.keyRelease(KeyEvent.VK_U); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 

 
\t \t case 'V': robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_V); 
 
\t \t robot.keyRelease(KeyEvent.VK_V); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 

 
\t \t case 'W': robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_W); 
 
\t \t robot.keyRelease(KeyEvent.VK_W); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 

 
\t \t case 'X': robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_X); 
 
\t \t robot.keyRelease(KeyEvent.VK_X); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 

 
\t \t case 'Y': robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_Y); 
 
\t \t robot.keyRelease(KeyEvent.VK_Y); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 

 
\t \t case 'Z': robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_Z); 
 
\t \t robot.keyRelease(KeyEvent.VK_Z); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 

 
\t \t case '`': robot.keyPress(KeyEvent.VK_BACK_QUOTE); 
 
\t \t robot.keyRelease(KeyEvent.VK_BACK_QUOTE);break; 
 

 
\t \t case '0': robot.keyPress(KeyEvent.VK_0); 
 
\t \t robot.keyRelease(KeyEvent.VK_O);break; 
 

 
\t \t case '1': 
 
\t \t robot.keyPress(KeyEvent.VK_1); 
 
\t \t robot.keyRelease(KeyEvent.VK_1);break; 
 

 
\t \t case '2': robot.keyPress(KeyEvent.VK_2); 
 
\t \t robot.keyRelease(KeyEvent.VK_2);break; 
 

 
\t \t case '3': robot.keyPress(KeyEvent.VK_3); 
 
\t \t robot.keyRelease(KeyEvent.VK_3);break; 
 

 
\t \t case '4': robot.keyPress(KeyEvent.VK_4); 
 
\t \t robot.keyRelease(KeyEvent.VK_4);break; 
 

 
\t \t case '5': robot.keyPress(KeyEvent.VK_5); 
 
\t \t robot.keyRelease(KeyEvent.VK_5);break; 
 

 
\t \t case '6': robot.keyPress(KeyEvent.VK_6); 
 
\t \t robot.keyRelease(KeyEvent.VK_6);break; 
 

 
\t \t case '7': robot.keyPress(KeyEvent.VK_7); 
 
\t \t robot.keyRelease(KeyEvent.VK_7);break; 
 

 
\t \t case '8': robot.keyPress(KeyEvent.VK_8); 
 
\t \t robot.keyRelease(KeyEvent.VK_8);break; 
 

 
\t \t case '9': robot.keyPress(KeyEvent.VK_9); 
 
\t \t robot.keyRelease(KeyEvent.VK_9);break; 
 

 
\t \t case '-': robot.keyPress(KeyEvent.VK_MINUS); 
 
\t \t robot.keyRelease(KeyEvent.VK_META);break; 
 

 
\t \t case '=': robot.keyPress(KeyEvent.VK_EQUALS); 
 
\t \t robot.keyRelease(KeyEvent.VK_EQUALS);break; 
 

 
\t \t case '~': robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_BACK_QUOTE); 
 
\t \t robot.keyRelease(KeyEvent.VK_BACK_QUOTE); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 

 
\t \t case '!': robot.keyPress(KeyEvent.VK_EXCLAMATION_MARK); 
 
\t \t robot.keyRelease(KeyEvent.VK_EXCLAMATION_MARK);break; 
 

 
\t \t case '@': robot.keyPress(KeyEvent.VK_AT); 
 
\t \t robot.keyRelease(KeyEvent.VK_AT);break; 
 

 
\t \t case '#': robot.keyPress(KeyEvent.VK_NUMBER_SIGN); 
 
\t \t robot.keyRelease(KeyEvent.VK_NUMBER_SIGN);break; 
 

 
\t \t case '$': robot.keyPress(KeyEvent.VK_DOLLAR); 
 
\t \t robot.keyRelease(KeyEvent.VK_DOLLAR);break; 
 

 
\t \t case '%': robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_5); 
 
\t \t robot.keyRelease(KeyEvent.VK_5); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 

 
\t \t case '^': robot.keyPress(KeyEvent.VK_CIRCUMFLEX); 
 
\t \t robot.keyRelease(KeyEvent.VK_CIRCUMFLEX);break; 
 

 
\t \t case '&': robot.keyPress(KeyEvent.VK_AMPERSAND); 
 
\t \t robot.keyRelease(KeyEvent.VK_AMPERSAND);break; \t 
 
\t \t case '*': robot.keyPress(KeyEvent.VK_ASTERISK); 
 
\t \t robot.keyRelease(KeyEvent.VK_ASTERISK);break; 
 
\t \t case '(': robot.keyPress(KeyEvent.VK_LEFT_PARENTHESIS); 
 
\t \t robot.keyRelease(KeyEvent.VK_LEFT_PARENTHESIS);break; 
 
\t \t case ')': robot.keyPress(KeyEvent.VK_RIGHT_PARENTHESIS); 
 
\t \t robot.keyRelease(KeyEvent.VK_RIGHT_PARENTHESIS);break; 
 
\t \t case '_': robot.keyPress(KeyEvent.VK_SHIFT); 
 
\t \t robot.keyPress(KeyEvent.VK_UNDERSCORE); 
 
\t \t robot.keyRelease(KeyEvent.VK_UNDERSCORE); 
 
\t \t robot.keyRelease(KeyEvent.VK_SHIFT);break; 
 
\t \t case '+': robot.keyPress(KeyEvent.VK_PLUS); 
 
\t \t robot.keyRelease(KeyEvent.VK_PLUS);break; 
 
\t \t case '\t': robot.keyPress(KeyEvent.VK_TAB); 
 
\t \t robot.keyRelease(KeyEvent.VK_TAB);break; 
 
\t \t case '\n': robot.keyPress(KeyEvent.VK_ENTER); 
 
\t \t robot.keyRelease(KeyEvent.VK_ENTER);break; 
 
\t \t case '[': robot.keyPress(KeyEvent.VK_OPEN_BRACKET); 
 
\t \t robot.keyRelease(KeyEvent.VK_OPEN_BRACKET);break; 
 
\t \t case ']': robot.keyPress(KeyEvent.VK_CLOSE_BRACKET); 
 
\t \t robot.keyRelease(KeyEvent.VK_CLOSE_BRACKET);break; 
 
\t \t case '\\': robot.keyPress(KeyEvent.VK_BACK_SLASH); 
 
\t \t robot.keyRelease(KeyEvent.VK_BACK_SLASH);break; 
 
\t \t case '{': robot.keyPress(KeyEvent.VK_OPEN_BRACKET); 
 
\t \t robot.keyRelease(KeyEvent.VK_OPEN_BRACKET);break; 
 
\t \t case '}': robot.keyPress(KeyEvent.VK_CLOSE_BRACKET); 
 
\t \t robot.keyRelease(KeyEvent.VK_CLOSE_BRACKET);break; 
 
\t \t case '|': robot.keyPress(KeyEvent.VK_BACK_SLASH); 
 
\t \t robot.keyRelease(KeyEvent.VK_BACK_SLASH);break; 
 
\t \t case ';': robot.keyPress(KeyEvent.VK_SEMICOLON); 
 
\t \t robot.keyRelease(KeyEvent.VK_SEMICOLON);break; 
 
\t \t case ':': robot.keyPress(KeyEvent.VK_COLON); 
 
\t \t robot.keyRelease(KeyEvent.VK_COLON);break; 
 
\t \t // kept continuing for all charecters 
 
\t \t } \t 
 
\t } \t

Как выбрать данные из пользовательского поля со списком, в котором выберите действие не принимает и действие робота часто не имитирует действия клавиатуры должным образом. Пробовал все возможные способы действий робота, sendkeys, выбирать действия, но никто не работает эффективно, пожалуйста, помогите мне, предложив любую другую альтернативу действиям робота. enter image description here

<div class="margb_med"> 
    <div class="left input_label mandatory">Card Template</div> 
    <div class="left input_field"> 
     <select id="cardTemplate" style="display: none;"> 
      <option value="" selected="">Select Card</option> 
      <option value="75" id="75">Card77</option> 
     </select> 
     <span class="custom-combobox"> 
      <input title="" class="custom-combobox-input ui-widget ui-widget-content ui-corner-left ui-autocomplete-input" autocomplete="off"> 
      <a tabindex="-1" class="ui-button ui-widget ui-state-default ui-button-icon-only custom-combobox-toggle ui-corner-right" role="button" title=""> 
       <span class="ui-button-icon-primary ui-icon ui-icon-triangle-1-s"></span> 
       <span class="ui-button-text"></span> 
      </a> 
     </span> 
    </div> 
    <div class="clr"></div> 
</div> 
+0

Не могли бы вы поделиться соответствующим HTML-кодом для этого настраиваемого раскрывающегося списка вместо скриншота, а также поделиться попыткой попробовать. –

+1

Вопросы поиска справки по отладке («** почему этот код не работает? **») должны включать в себя желаемое поведение , конкретную проблему или ошибку и кратчайший необходимый код, чтобы воспроизвести его ** в самом вопросе **. Вопросы без ** ясного заявления о проблеме ** не полезны для других читателей. См.: [Mcve]. – JeffC

+1

Вы сбросили кучу кода, большинство из которых не имеет отношения к вопросу. Укажите кратчайший код, необходимый для воспроизведения проблемы. – JeffC

ответ

0

JavascriptExecutor = расслоение плотной (JavascriptExecutor) драйвера;
Строковая карта = «Карточка» + переменная. js.executeScript ("$ ('# cardTemplate'). Siblings ('. Custom-combobox'). Find ('. Ui-autocomplete-input'). Val ('" + card + "')");

+0

Грузы Спасибо за людей, которые пытались ответить мне .. сожалеет о людях, которые мне не нравились. –

Смежные вопросы