簡體   English   中英

單擊硒下拉菜單中的選定元素

[英]click on selected element in drop down menu with 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,但運氣沒有更好。

使用Select類來處理下拉限制,

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)

更多關於選擇課程,請參考這個

屬性style="display: none;" <select>標記下的問題導致選擇下拉值時出現問題。

解決方案:-首先,您需要更改屬性值(顯示),然后必須選擇下拉列表。 您必須使用JavascriptExecutor通過以下方式進行操作-

在Java中-

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

在Python中,以下代碼可能有效(請根據Python語言使用JavascriptExecuter

        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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM