首页 > 解决方案 > Selecting an item from the dropdown menu of a list using Python + Selenium

问题描述

I'm trying to select an element from an unordered list using Selenium in Python. My current code clicks on the drop down menu and opens it up, but I'm having trouble getting it to click on an item in the list.

I'm trying to get it to click on Inactive.

Here's the HTML snippet:

<form method="post" action="/user/admin/user/practice/edit/18" id="qf_admin_practice_edit" class="qf-form"
      onsubmit="return validate(this)">
    <fieldset id="qf_admin_practice_edit__data" class="qf-fieldset">
        <legend>Edit Practice</legend>
        <div class="qf-select-wrapper" id="qf_admin_practice_edit__data__status_id__wrapper">
        <span class="qf-label-span" id="qf_admin_practice_edit__data__status_id__label_span">
            <label id="qf_admin_practice_edit__data__status_id__label" for="qf_admin_practice_edit__data__status_id">Practice Status</label>
        </span>
            <span class="qf-select-span" id="qf_admin_practice_edit__data__status_id__span">
            <span class="qf-select-inner" id="qf_admin_practice_edit__data__status_id__inner">
                <div class="selectric-wrapper selectric-qf-select selectric-above selectric-open">
                    <div class="selectric-hide-select">
                <select title="Practice Status" name="admin_practice_edit__data__status_id"
                        id="qf_admin_practice_edit__data__status_id" class="qf-select" tabindex="-1">
                    <option value="1" class="qf-option">Active</option>
                    <option value="2" class="qf-option">Inactive</option>
                    <option value="3" class="qf-option">Pending</option>
                    <option value="4" class="qf-option">Billing Suspension</option>
                    <option value="5" class="qf-option">Activity Suspension</option>
                    <option value="6" class="qf-option">Declined</option>
                    <option value="7" selected="selected" class="qf-option">Deleted</option>
                    <option value="8" class="qf-option">Cancelled</option>
                    <option value="9" class="qf-option">Reschedule</option>
                    <option value="10" class="qf-option">Expired</option>
                    <option value="11" class="qf-option">New</option>
                </select>
                    </div>
                    <div class="selectric">
                    <span class="label">Deleted</span>
                        <b class="button">▾&lt;/b>
                </div>
                    <div class="selectric-items" tabindex="-1" style="width: 718px; height: 300px;">
                        <div class="selectric-scroll">
                            <ul>
                                <li data-index="0" class="qf-option">Active</li>
                                <li data-index="1" class="qf-option">Inactive</li>
                                <li data-index="2" class="qf-option">Pending</li>
                                <li data-index="3" class="qf-option">Billing Suspension</li>
                                <li data-index="4" class="qf-option">Activity Suspension</li>
                                <li data-index="5" class="qf-option">Declined</li>
                                <li data-index="6" class="qf-option selected highlighted">Deleted</li>
                                <li data-index="7" class="qf-option">Cancelled</li>
                                <li data-index="8" class="qf-option">Reschedule</li>
                                <li data-index="9" class="qf-option">Expired</li>
                                <li data-index="10" class="qf-option last">New</li>
                            </ul>
                        </div>
                    </div>
                    <input class="selectric-input" tabindex="0">
                </div>
        </span>
      </span>
        </div>
    </fieldset>
    <div class="qf-button-wrapper" id="qf_admin_practice_edit__submit__wrapper">
        <button type="submit" value="Submit" id="qf_admin_practice_edit__submit" class="qf-button">
            <span>Submit</span>
        </button>
    </div>
    <div>
        <input value="2449978437" type="hidden" name="qf" class="qf-hidden-input qf-input">
    </div>
</form>

I'm selecting/opening up the drop down menu using:

clickDropDown = driver.find_element_by_id('qf_admin_practice_edit__data__status_id__wrapper').click()

标签: pythonseleniumxpathcss-selectorswebdriverwait

解决方案


想通了,但这是一个我不喜欢的丑陋解决方案,但它有效。

        openDropDown = driver.find_element_by_id('qf_admin_practice_edit__data__status_id__wrapper').click()
        swapToActive = driver.switch_to.active_element
        swapToActive.send_keys(Keys.UP)
        swapToActive.send_keys(Keys.UP)
        swapToActive.send_keys(Keys.UP)
        swapToActive.send_keys(Keys.UP)
        swapToActive.send_keys(Keys.UP)
        swapToActive.send_keys(Keys.RETURN)

推荐阅读