点击下拉菜单中的选定元素,使用selenium

时间:2016-12-23 10:04:05

标签: python selenium drop-down-menu

我尝试使用selenium从下拉菜单中选择第二个元素,正如您在屏幕截图中看到的那样,选择似乎已基本完成,但后来我没有设法确认更改。我尝试使用click()或Keys.ENTER,但没有。

这是HTML:

<div class="mainSelectParent">
    <div class="styled-select" style="">
       <label></label>
       <select id="mainselect" style="display: none;">
        <option value="agency">une agence</option>
        <option value="atm">un distributeur automatique de billets</option>
        <option value="atmCashDeposit">un automate de dépôt de billets</option>
       </select><div class="ms-parent" style="width: 100%;"><button type="button" class="ms-choice"><span class=""> un distributeur automatique de billets</span><div class="open"></div></button><div class="ms-drop bottom" style="display: block;"><ul style="max-height: 250px;"><li class=""><label><input type="radio" name="selectItem" checked="checked" value="agency"> une agence</label></li><li class="selected"><label><input type="radio" name="selectItem" value="atm"> un distributeur automatique de billets</label></li><li><label><input type="radio" name="selectItem" value="atmCashDeposit"> un automate de dépôt de billets</label></li><li class="ms-no-results" style="display: none;">No matches found</li></ul></div></div>
    </div>
  </div>

这是我的代码:

wait = WebDriverWait(driver, 15)
wait.until(EC.visibility_of_element_located((By.CLASS_NAME,    "mainSelectParent")))
element = driver.find_element_by_class_name('mainSelectParent')
element.send_keys(Keys.DOWN)
element.click()

我也尝试过使用Select和ActionChains,但没有更好的运气。

2 个答案:

答案 0 :(得分:0)

使用from selenium.webdriver.support.ui import Select select = Select(driver.find_element_by_id('mainselect')) # select by visible text select.select_by_visible_text('un distributeur automatique de billets') # OR # select by value select.select_by_value('atm') # OR # select by index select.select_by_index(1) 类来处理下拉约束,

DemandeRageAnimaleDAO.Entry(editdemande).State = EntityState.Modified;
DemandeRageAnimaleDAO.SaveChanges();

有关选择课程的更多信息,请参阅this

答案 1 :(得分:0)

style="display: none;"标记下的属性<select>导致选择下拉值时出现问题。

解决方案: - 首先,您需要更改属性值(make is display),然后必须选择下拉列表。您必须使用JavascriptExecutor以下列方式执行此操作 -

在Java中 -

    JavascriptExecutor js = (JavascriptExecutor) driver;
    js.executeScript("document.getElementById('mainselect').setAttribute('style', 'display:block')");

在Python中,以下代码可能有效(请根据JavascriptExecuter语言使用Python

        driver.execute_script("document.getElementById('mainselect').setAttribute('style', 'display:block')");

        select = Select(driver.find_element_by_id('mainselect'))

        # select by visible text
        select.select_by_visible_text('un distributeur automatique de billets')

        # OR

        # select by value 
        select.select_by_value('atm')

        # OR
        # select by index
        select.select_by_index(1)