如何使用Python Selenium从Bootstrap下拉列表中选择元素?下拉列表的HTML看起来像:
<select type="select" class="selectpicker form-control" id="selFoo" >
<option data-hidden="true">Make a selection</option>
<option>Foo</option>
<option>Bar</option>
<option>Baz</option>
</select>
我尝试过使用selenium Select模块,但收到的错误如下:
selenium.common.exceptions.ElementNotVisibleException: Message: Element is not currently visible and so may not be interacted
答案 0 :(得分:1)
如果您想从示例下拉列表中选择“Bar”,请执行以下操作:
browser = webdriver.Firefox(profile)
browser.get(hostname)
sleep(1) # wait for page to render
dropdown = browser.find_element_by_css_selector("button[data-id=selFoo]")
dropdown.click()
sleep(1) # probably not necessary
option = browser.find_element_by_css_selector("ul[role=menu] a[data-normalized-text='<span class=\"text\">Bar</span>']")
option.click()
仅在Firefox中测试。
答案 1 :(得分:0)
答案 2 :(得分:0)
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support.select import Select
dropdown = Select(WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_id("selFoo")))
dropdown.select_by_visible_text("Baz")
这应该有效。如果它没有,你可以尝试在这两行之前添加它。
WebDriverWait(driver, 10).until(lambda driver: driver.execute_script("return jQuery.active === 0"))
这将确保在jQuery完成之前没有发生任何事情。