|
|
心软的铁板烧 · 弹幕的两种实现及性能对比 | 自定义 ...· 1 月前 · |
|
|
玩足球的饭卡 · 推荐|雷达和卫星的气象深度学习应用最佳实践- ...· 2 年前 · |
|
|
深情的围巾 · datetime 数据类型转换 ...· 2 年前 · |
|
|
满身肌肉的野马 · reactjs - How to ...· 2 年前 · |
|
|
慷慨大方的烤地瓜 · Excel VBA 按时间范围筛选和统计 - 知乎· 2 年前 · |
经过测试的HTML:
<select>
<option value="html">html</option>
<option value="css">css</option>
<option value="JavaScript">JavaScript</option>
<option value="php">php</option>
</select>
isMultiple()
中没有像
selenium.webdriver.support.select.Select(webelement)
这样的方法,也没有
select_all()
方法
Select(lang).select_by_visible_text("html")
Select(lang).select_by_visible_text("css")
Select(lang).select_by_visible_text("JavaScript")
Select(lang).select_by_visible_text("php")
然后尝试获取所有选定的选项。
Select(lang).all_selected_options
我只能得到最后一个选项'php',这意味着当我选择一个选项时,另一个选项被自动取消选择。
all_selected_options
的含义是什么,
options
是很有用的。我不能取消选择任何选项,因为只有一个选项被选中,报告了一个错误:
NotImplementedError: You may only deselect options of a multi-select
此下拉列表不支持多个选择,该下拉列表将具有
multiple
属性
<select multiple="">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
</select>
没有
is_multiple()
函数,但是有一个变量
is_multiple
。它是在
Select
__init__
中通过检查
multiple
属性创建的
def __init__(self, webelement):
self._el = webelement
multi = self._el.get_attribute("multiple")
self.is_multiple = multi and multi != "false"
您可以使用
Select
实例访问它。
Select(element).is_multiple
要获取所有下拉选项,不管它们是否被选中,请使用
option
属性,这将以
WebElement
列表的形式返回所有选项
options = Select(element).options
for option in options:
print option.text # html, css, ...
如果要在python中使用selenium选择多个选项,可以始终使用
ActionChains
链接一系列操作,在本例中需要以下操作:
CTRL
键
Click
关于期权
CTRL
密钥
这里是在python 中使用ActionChains的一个很好的例子
列出要在python中选择的选项列表,循环列表并使用
xpath
选择包含
text
的选项,然后使用
ActionChains
使用上面定义的一系列操作来选择该选项。
# Text of options needed to select
options = ['html','css','php']
# Add path to your chrome drive
browser = webdriver.Chrome(executable_path="EXECUTABLE_PATH_HERE")
# Add url of website
browser.get("WEBSITE_URL_HERE")
for option in options:
# Find option that contains text equal to option
to_select = browser.find_element_by_xpath("//select/option[text()='"+option+"']")
# Use ActionChains
ActionChains(browser).key_down(Keys.CONTROL).click(to_select).key_up(Keys.CONTROL).perform()
ActionChains()
获取驱动程序的引用,即
browser
。
key_down()
按下传递给它的
CONTROL
键。
click()
单击使用
xpath
选择的已传递选项。
key_up()
发布
CONTROL
密钥
我希望这会对你有很大帮助。