簡體   English   中英

如何使用Selenium在python中選擇下拉菜單

[英]How to select dropdown menu in python using Selenium

我想知道如何從網站的下拉列表中選擇選項。

html在這里

<thead>
    <td style="width: 40%;">
        <select name="product_size" id="sct-size" data-md-selectize>
            <option value="-">Choose Size</option>
                                                    <option value="323">XS</option>
                                                    <option value="324">S</option>
                                                    <option value="325">M</option>
                                                    <option value="326">L</option>
                                                    <option value="327">XL</option>
                                                    <option value="328">XXL</option>
                                                    <option value="342">1 years old</option>
                                                    <option value="343">5 years old</option>
                                                    <option value="344">8 years old</option>
                                                    <option value="345">12 years old</option>
                                                </select>
    </td>
    <td style="width: 40%;">
        <select name="product_color" id="sct-color" data-md-selectize>
            <option value="-">Choose Color</option>
                                                    <option value="594">N/A</option>
                                                </select>
    </td>
    <td style="width: 19%;"><input type="text" class="md-input" name="product_stock_" id="inp-stock" placeholder="Stock" style="margin-top: -11px;text-align: center;"/></td>
    <td style="width: 1%;"><a href="#" id="btn-addstock" style="margin-top: 5px; display: block;" title="Add Stock"><i class="material-icons">&#xE148;</i></a></td>
</thead>

我想選擇“選擇大小”,然后選擇“ S”選項。 我嘗試了這段代碼。

from selenium import webdriver
from selenium.webdriver.support.select import Select

mySelect = Select(driver.find_element_by_id("sct-size"))
mySelect.select_by_visible_text("S")

但是得到了錯誤

NoSuchElementException:消息:無法找到帶有可見文本的元素:S

我已經在stackoverflow上找到了很多關於此問題的解決方案。 它假定從下拉菜單中選擇“ S”,但沒有選擇。 我不知道我還能嘗試什么。

謝謝。

已經嘗試過

  1. https://sqa.stackexchange.com/questions/12029/how-do-i-work-with-dropdowns-in-selenium-webdriver
  2. 使用Python + Selenium選擇一個下拉菜單

編輯1

我也試過

mySelect = Select(driver.find_element_by_id("sct-size"))
mySelect.select_by_value("323")

但是得到這個錯誤

NoSuchElementException:消息:無法找到具有值:323的選項

我也嘗試使用名稱更改find​​_element方法

obj = Select(driver.find_element_by_name('product_size'))
obj.select_by_index(1)

並出現錯誤

NoSuchElementException:消息:無法找到索引為1的選項

也許find_element是問題? 我不知道。

編輯2

我厭倦了使用谷歌瀏覽器中的“檢查”工具,發現頁面加載時,html僅加載了1個選項(在本例中為“選擇大小”)。 這解釋了為什么會出錯。

頁面加載時的html代碼。

<thead>
<td style="width: 40%;">
    <select name="product_size" id="sct-size" data-md-selectize>
        <option value="-">Choose Size</option>                                                    
</td>
<td style="width: 40%;">
    <select name="product_color" id="sct-color" data-md-selectize>
        <option value="-">Choose Color</option>

                                            </select>
</td>
<td style="width: 19%;"><input type="text" class="md-input" name="product_stock_" id="inp-stock" placeholder="Stock" style="margin-top: -11px;text-align: center;"/></td>
<td style="width: 1%;"><a href="#" id="btn-addstock" style="margin-top: 5px; display: block;" title="Add Stock"><i class="material-icons">&#xE148;</i></a></td>
</thead>

嘗試Seema Nair解決方案,但出現其他錯誤

AttributeError:“選擇”對象沒有屬性“點擊”

我的新代碼是

mySelect = Select(driver.find_element_by_id("sct-size")) 
mySelect.click() 
mySelect.select_by_visible_text("S")

因此,新問題是,我如何單擊下拉菜單以顯示選項代碼?

您可以通過可見的文本或值來選擇原始代碼。

我遇到了類似的問題,這是因為在從下拉列表中選擇值之前,我必須單擊下拉鏈接,然后執行選擇。

因此,在Select之前添加一個click方法,您最初使用的相同代碼將起作用。

暫無
暫無

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

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