Unable to select the very first option of multi-select values which are being passed

Viewed 28

I am trying to select multiple values in a multi select picklist. I am able to select the multiple values but the very first value which is being passed is not selected.

HTML CODE:

<ul lightning-duallistbox_duallistbox="" class="slds-listbox slds-listbox_vertical" data-source-list="" id="source-list-315" aria-describedby="keyboard-interacton-315" aria-labelledby="source-list-label-315" aria-multiselectable="true" role="listbox"
  aria-disabled="false">
  <li lightning-duallistbox_duallistbox="" class="slds-listbox__item" role="presentation">
    <div lightning-duallistbox_duallistbox="" class="slds-listbox__option slds-listbox__option_plain slds-media slds-media_small slds-media_inline" aria-selected="false" role="option" tabindex="0" data-index="0" data-value="APAC"><span lightning-duallistbox_duallistbox="" class="slds-media__body"><span lightning-duallistbox_duallistbox="" class="slds-truncate" title="APAC">APAC</span></span>
    </div>
  </li>
  <li lightning-duallistbox_duallistbox="" class="slds-listbox__item" role="presentation">
    <div lightning-duallistbox_duallistbox="" class="slds-listbox__option slds-listbox__option_plain slds-media slds-media_small slds-media_inline" aria-selected="false" role="option" tabindex="-1" data-index="1" data-value="EMEA"><span lightning-duallistbox_duallistbox="" class="slds-media__body"><span lightning-duallistbox_duallistbox="" class="slds-truncate" title="EMEA">EMEA</span></span>
    </div>
  </li>
  <li lightning-duallistbox_duallistbox="" class="slds-listbox__item" role="presentation">
    <div lightning-duallistbox_duallistbox="" class="slds-listbox__option slds-listbox__option_plain slds-media slds-media_small slds-media_inline" aria-selected="false" role="option" tabindex="-1" data-index="2" data-value="LATAM"><span lightning-duallistbox_duallistbox="" class="slds-media__body"><span lightning-duallistbox_duallistbox="" class="slds-truncate" title="LATAM">LATAM</span></span>
    </div>
  </li>
  <li lightning-duallistbox_duallistbox="" class="slds-listbox__item" role="presentation">
    <div lightning-duallistbox_duallistbox="" class="slds-listbox__option slds-listbox__option_plain slds-media slds-media_small slds-media_inline" aria-selected="false" role="option" tabindex="-1" data-index="3" data-value="US"><span lightning-duallistbox_duallistbox="" class="slds-media__body"><span lightning-duallistbox_duallistbox="" class="slds-truncate" title="US">US</span></span>
    </div>
  </li>
  <li lightning-duallistbox_duallistbox="" class="slds-listbox__item" role="presentation">
    <div lightning-duallistbox_duallistbox="" class="slds-listbox__option slds-listbox__option_plain slds-media slds-media_small slds-media_inline" aria-selected="false" role="option" tabindex="-1" data-index="4" data-value="Canada"><span lightning-duallistbox_duallistbox="" class="slds-media__body"><span lightning-duallistbox_duallistbox="" class="slds-truncate" title="Canada">Canada</span></span>
    </div>
  </li>
</ul>

//Code written by me.
List<WebElement> options = new ArrayList<WebElement>();
for(int i=1;i<=5;i++) {
    WebElement region = driver.findElement(By.xpath("//ul[@role=\"listbox\"]/li["+i+"]/div"));
    options.add(region);
    region = null;
}

Actions actions = new Actions(driver);
    actions.keyDown(Keys.LEFT_CONTROL)
        .click(options.get(0))
        .click(options.get(1))
        .click(options.get(3))
        .keyUp(Keys.LEFT_CONTROL)
        .build()
        .perform();

enter image description here

The first value i.e .click(options.get(0)) is not selected.

Can someone help me over here as I am stuck in this.

Thank You

1 Answers

@Mansi Palav, Since I do not have the entire web page, not able to debug why it is not selecting the first one. But you can get all the elements at one go without using for loop as given below. Let me know if this works:

List<WebElement> regions = driver.findElements(By.xpath("//ul[@role='listbox']/li/div"));

Actions actions = new Actions(driver);
actions.keyDown(Keys.LEFT_CONTROL).click(regions.get(0)).click(regions.get(1)).click(regions.get(3))
        .keyUp(Keys.LEFT_CONTROL).build().perform();

You will have to add the following import:

import java.util.List;
Related