[英]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.