0

I have the following code snippet

<div class="space-10"></div>
<form action="/book/index" method="post" class="form-inline" >
<div class="row no-margin no-padding">
<div class="form-group col-sm-3 col-xs-12 no-margin-padding">
   <select id="sport" name="sport" data-style="form-control">
      <option value="">Välj sport</option>
      <option value="1" 
         data-content="<i class='ma ma-Tennis'></i> Tennis">Tennis</option>
      <option value="2" 
         data-content="<i class='ma ma-Badminton'></i> Badminton">Badminton</option>
      <option value="3" 
         data-content="<i class='ma ma-Squash'></i> Squash">Squash</option>
      <option value="4" 
         data-content="<i class='ma ma-Bordtennis'></i> Bordtennis">Bordtennis</option>
      <option value="5" 
         data-content="<i class='ma ma-Padel'></i> Padel">Padel</option>
      <option value="6" 
         data-content="<i class='ma ma-Övrigt'></i> Övrigt">Övrigt</option>
      <option value="7" 
         data-content="<i class='ma ma-Pickleball'></i> Pickleball">Pickleball</option>
   </select>
</div>

And i want random selection of an item from list. I've tried all possible selectors but getting element not found error.

  • You can use Select class with value (write API to generate random number from 1 to 7). This should ideally address your requirement. Could you please share what selectors you have tried. – Kshetra Mohan Prusty Aug 21 '18 at 6:10
2

I hope my below code may help you:

Select dropdown = new Select(driver.findElement(By.id("id")));

//Get all options
List<WebElement> dd = dropdown.getOptions();
int index = 0;//if list contains only one element it will take that element
if(dd.size()>1){
   //Get a random number between 1, size of dd
    random rand = new Random();
    index = rand.nextInt(dd.size()-1);
 }else if(dd.size()<1){
    //print error message
     int = -1;
 }
 if (index >= 0){
     dropdown.selectByIndex(index);
 }
  • 1
    Your code misses some checks for dd.size() since if dd.size()-1 would be <=0 you will get an Exception in nextInt() – Alexey R. Aug 21 '18 at 8:24
  • my intention is to give an idea of selecting random option, they need to take care of exceptions – Nagasatish Aug 21 '18 at 12:22
  • 1
    Of course it is up to you how to give the answer. I'm just saying that your code will not work for size = 1 and it won't take much time to fix. – Alexey R. Aug 21 '18 at 13:08
  • it will work for size = 1 , it will take the 0th index element when size is 1 – Nagasatish Aug 22 '18 at 4:37
  • 1
    No, it will not. Have you ever tried to call new Random().nextInt(0)? Check this: docs.oracle.com/javase/8/docs/api/java/util/… – Alexey R. Aug 22 '18 at 8:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.