2017-04-20 2 views
0
<tr class="form-row form-row-odd form-row-err form-cols-2 form_element_company_id"> 
    <th>Company&nbsp; 
     <span class="required">*</span> 
    </th> 
    <td> 
     <select name="company_id" class="selectmenu input-inf select2-initialized select2-hidden-accessible" tabindex="-1" aria-hidden="true"> 
      <option value="">— None —</option> 
      <option value="1" class="sub-option-0 ">Option 1</option> 
      <option value="14" class="sub-option-0 ">Option 2</option> 
      <option value="45" class="sub-option-1 " data-parent-name="Option 2="14">Option 2-1</option> 
      <option value="46" class="sub-option-1 " data-parent-name="Option 2" data-parent-id="14">Option 2-2</option> 
      <option value="47" class="sub-option-1 " data-parent-name="Option 2" data-parent-id="14">Option 2-3</option> 
      <option value="29" class="sub-option-0 ">Option 3</option> 
      <option value="30" class="sub-option-0 ">Option 4</option> 
      <option value="31" class="sub-option-0 ">Option 5</option> 
     </select> 
    </td> 
</tr> 

Ich versuche, eine Funktion zu erstellen, die automatisch eine Option aus dem select2 name = "company_id" abholt: Bisher habe ich versucht:Protractor Funktionsfehler Erzeugung von Zufalls Option Selectui

function setUserCompany('selector'){  
    var companyField = $('selector'); 
     if (companyField.length == 0) { 
     return; 
     } 
     var options = companyField.find('option') 
    if (options.length == 0) { 
    return; 
    } 
    var randomIdx = Math.floor((Math.random() * selector.length)+1); 
    var randomValue = $(options.get(randomIdx)).attr('value'); 
    companyField.select2().val(randomValue).trigger('change'); 
    } 

^bringt mich "Failed: companyField.find ist keine Funktion".

// var allOptions = element(by.css('name="group_id"')).element(by.css('.selectmenu')).all(by.tagName('option')); 
    // allOptions.count().then(function(numberOfItems) { 
    // return Math.floor(Math.random() * numberOfItems) + 1; 
    // }).then(function(randomNumber) { 
    // allOptions.get(randomNumber).click(); 
    // randomNumber(); 
    // }); 

^scheint nicht

Antwort

0

Ich denke, arbeiten Sie den Zufallswert oder klicken Sie auf zufällige Option erhalten möchten. Sie haben fast nur verpasst, die Auswahlbox nach css name zu bekommen. Versuchen Sie dies,

var companySelectBox = browser.element(by.css('[name="company_id"]')); 
companySelectBox.all(by.tagName('option')).then(function(options){ 
    //random id between option length 
    var randomId = Math.floor((Math.random() * options.length)+1); 
    console.log('random id ' + randomId); 
    options[randomId].getText().then(function(text){ 
     console.log('random option text ' + text); 
    }); 
    //click on random option 
    options[randomId].click(); 
    //TODO: whatever other task similar 
});