2017-06-27 2 views
0

Ich versuche, Element aus einem der Dropdown-Menü nach der anderen Auswahl der Option im Dropdown-Menü zuvor richtig ausgewählt.HtmlUnit: Wie wähle ich die Option nach anderen

Liste der Optionen: Optionsvorlage, diese Liste wurde nach einer Auswahl von optionsProtocole erstellt.

error: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 was returned.

/// Select protocole 

HtmlSelect selectFieldProtocole = (HtmlSelect) page.getElementByName("protocolNameID"); 
List<HtmlOption> optionsProtocole = selectFieldProtocole.getOptions(); 
HtmlOption theOptionProtocole = null; 

for (HtmlOption option : optionsProtocole) { 
    if (option.getText().equals("dd")) { 
     theOptionProtocole = option; 
    } 
} 

selectFieldProtocole.setSelectedAttribute(theOptionProtocole, true); 

//// select version 

HtmlSelect selectFieldtemplate = (HtmlSelect) page.getElementByName("protocolVersion"); 

List<HtmlOption> optionstemplate = selectFieldtemplate.getOptions(); 
HtmlOption theOptiontemplate = null;    

for (HtmlOption option : optionstemplate) { 
    System.out.println("ma version " + option.getText()); 

    if (option.getText().equals("dd-V2.1.3")) { 
     theOptiontemplate = option; 
    } 
} 

System.out.println("ma version " + optionstemplate.get(0).getText()); 
// line before return error size zero so,line following don't work 
selectFieldtemplate.setSelectedAttribute(theOptiontemplate, true); 

HTML:

<div id="Upload file"> 
    <form action="http://qa2tsqat23101v-int.devqa.exch.int/minos/index.php/injector/MateloUpload" method="post" enctype="multipart/form-data"> 
     <div id="protocolNameID"> 
      <label for="protocolNameID"> Protocol Name </label> 
      <select name= "protocolNameID" class="protocol_choice" url="http://qa2tsqat23101v-int.devqa.exch.int/minos/index.php/injector/project/choose_protocolNameID/118"> 
       <option selected="selected" value= 'NULL'> </option> 
       <option value= "127"></option> 
       <option value= "19">ARCADIRECT</option> 
       <option value= "134">BIN 2</option> 
       <option value= "112">BIN MTF</option> 
       <option value= "131">Copy ARCADIRECT 2.6W</option> 
       <option value= "130">copy Fix4.2</option> 
       <option value= "125">copy_test</option> 
       <option value= "126">copy_test</option> 
       <option value= "116">dd</option> 
       <option value= "119">dd - v1.13.0</option> 
       <option value= "120">dd 1.13.0-6</option> 
       <option value= "117">dd-v1.8.21</option> 
       <option value= "8">FIX</option> 
       <option value= "114">FOUNDATION</option> 
       <option value= "115">Foundation</option> 
       <option value= "110">FULL BINARY</option> 
       <option value= "118">FullTestCases_5.4.1.s19_ME_CANO1_Limit8_full</option> 
       <option value= "999">INTERNAL</option> 
       <option value= "122">MIFID2 BIN</option> 
       <option value= "123">MIFID2 FIX</option> 
       <option value= "999">TBD</option> 
       <option value= "121">tccmi</option> 
       <option value= "109">TCS BIN</option> 
       <option value= "108">TCS FIX</option> 
       <option value= "128">TESTTT</option> 
       <option value= "129">TESTTTTT</option> 
       <option value= "111">UTP DIRECT</option> 
       <option value= "132">WSE BIN</option> 
       <option value= "133">WSE BIN 2</option> 
       <option value= "135">WSE FIX Test</option> 
       <option value= "113">XDP D</option>  
      </select> 
      <input type="hidden" id="currentNameID" name="currentNameID" value= "" > 
     </div> 
     <div id="protocolVersion"> 
      <label for="protocolVersion"> Version </label> 
      <select name= "protocolVersion" class="protocol_choice2"></select> 
      <input type="hidden" id="currentVersion" name="currentVersion" value=""> 
     </div> 
+0

nach Auswahl von protocolID: user8221653

Antwort

0

Wenn Sie einen Benutzer die Auswahl etwas aus einer Liste simulieren Sie die HtmlOption Sie als Ausgangspunkt wählen möchten verwenden verwenden. Allgemein gilt:

  1. die HtmlOption Sie für Sie
  2. Wählen Sie diese Option mit myOption.setSelected (true)

Das tun alle erforderlichen Hintergrundarbeit wählen möchten finden (einschließlich Abwahl oder andere Optionen falls erforderlich und Ereignisauslösung). Denken Sie daran, dass das Ändern der Auswahl nicht durch die dom-Attribute wiedergegeben wird. Als Ergebnis, wenn z.B. page.asXML wird immer noch der gleiche Code angezeigt (das ausgewählte Attribut befindet sich immer noch am ursprünglichen Ort). Wenn Sie die Auswahl überprüfen möchten, müssen Sie Javascript oder die isSelected-Methode für die Option verwenden. Oder Sie können die HttpClient-Kabelprotokollierung aktivieren und die übermittelten Werte auf der Leitung überprüfen.

Verwandte Themen