Я хочу знать, как выбрать опцию из выпадающего списка на веб-сайте.
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"></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
Iмногие решения этой проблемы уже рассматривались здесь на stackoverflow.Предполагается выбрать «S» из выпадающего меню, но не сделал.Я не знаю, что еще я могу попробовать.
Спасибо.
уже пробовал
- https://sqa.stackexchange.com/questions/12029/how-do-i-work-with-dropdowns-in-selenium-webdriver
- Выберите раскрывающийся список, используя 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
Я устал играть с инструментом «осмотреть» в Google Chrome и обнаружил, что при загрузке страницы, 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"></i></a></td>
</thead>
Пробовал решение Seema Nair, но получил другую ошибку
AttributeError: 'Select'объект не имеет атрибута 'click'
мой новый код
mySelect = Select(driver.find_element_by_id("sct-size"))
mySelect.click()
mySelect.select_by_visible_text("S")
Итак, новый вопрос, как я могу щелкнуть раскрывающийся список, чтобы раскрыть код опции?