familyGuy
familyGuy

Reputation: 435

Element is not currently visible so may not be interacted with

I need to select the last item in the list. My code below shows the message that the element is not currently visible. How can fix this?

WebDriverWait wait = new WebDriverWait(driver, 60);
        wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.cssSelector("#s2id_autogen1 > a.select2-choice > span")));
WebElement element = driver.findElement(By.xpath("//select[@name='siteKey']"));
element.click();

Select select = new Select(element);
select.selectByIndex(select.getOptions().size()-1);

HTML:

<div id="overview_form">
<ol>
    <li>
        <span>1.</span>
        <label class="input_label" for="sites">Sites*</label>
        <div class="select2-container select2-dropdown-open select2-container-active" id="s2id_autogen1" style="width: 500px;">
            <a tabindex="-1" class="select2-choice" onclick="return false;" href="javascript:void(0)">   
                <span>gn</span><abbr style="display:none;" class="select2-search-choice-close"></abbr><div><b></b></div></a>
                <input type="text" class="select2-focusser select2-offscreen" disabled="disabled"></div>
        <select style="width:500px; *width:400px;" size="1" name="siteKey" class="select2-offscreen" tabindex="-1">
        <option value="30706">gn</option>
        <option value="30813">www.walmart.com_20150212151258</option>
        <option value="30815">www.walmart.com_20150212151452</option>
        <option value="30817">www.walmart.com_20150212152338</option>
        <option value="30819">www.walmart.com_20150212152521</option>
        <option value="30820">www.walmart.com_20150212152849</option>
        <option value="30822">www.walmart.com_20150212152939</option>
        <option value="30824">www.walmart.com_20150212153438</option>
        <option value="30761">www.yup.com</option>
        </select>

    </li>

</ol>

Screenshot of the List. This list has a search field, where user can enter prefixes to narrow-down the search.

enter image description here

Upvotes: 1

Views: 624

Answers (1)

Saifur
Saifur

Reputation: 16201

Try this. Please make sure to expand the list as needed. The selector is written such a way so that it will always fine the last option of the select tag named siteKey

//this selector find the last child o
By cssSelector = By.cssSelector("[name='siteKey']>option:last-child");

//explicit wait to make sure the element present
WebElement element = new WebDriverWait(driver,10).until(ExpectedConditions.presenceOfElementLocated(cssSelector));
element.click();

System.out.println(element.getText());

Print

www.yup.com

Upvotes: 1

Related Questions