(13)下拉选择框
selenium的下拉选择框。我们通常会遇到两种下拉框,一种使用的是html的标签select,另一种是使用input标签做的假下拉框。
标签select:需要用到Select类,先要导入select方法,
from selenium.webdriver.support.select import Select
input标签:通常的处理方式与其他的元素类似,点击或使用JS等。
认识一下select下拉框选择:
<select id="nr" name="NR">
<option selected="" value="10">每页显示10条</option>
<option value="20">每页显示20条</option>
<option value="50">每页显示50条</option>
定位:
1、通过select选项的索引来定位选择对应选项(从0开始计数),如选择第三个选项:select_by_index(2)
2、通过选项的value值来定位,select_by_value("20")
3、通过选项的文本内容来定位。select_by_visible_text("每页显示50条")
# coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select
driver = webdriver.Firefox()
url = "https://www.baidu.com"
driver.get(url)
driver.implicitly_wait(20)
# 鼠标移动到“设置”按钮
mouse = driver.find_element_by_link_text("设置")
ActionChains(driver).move_to_element(mouse).perform()
driver.find_element_by_link_text("搜索设置").click()
# 通过text:select_by_visible_text()
s = driver.find_element_by_id("nr")
Select(s).select_by_visible_text("每页显示50条")
# # 分两步:先定位下拉框,再点击选项
# s = driver.find_element_by_id("nr")
# s.find_element_by_xpath("//option[@value='50']").click()
# # 另外一种写法
# driver.find_element_by_id("nr").find_element_by_xpath("//option[@value='50']").click()
# # 直接通过xpath定位
# driver.find_element_by_xpath(".//*[@id='nr']/option[2]").click()
# # 通过索引:select_by_index()
# s = driver.find_element_by_id("nr")
# Select(s).select_by_index(2) # 实例化Select(s)
# # 通过value:select_by_value()
# s = driver.find_element_by_id("nr")
# Select(s).select_by_value("20")
s1 = Select(driver.find_element_by_id('nr'))
# 查看一个select所有的选项
for select in s1.options:
print select.text
# 查看我已选中的选项,如果支持多项的select
for select in s1.all_selected_options:
print select.text
Select提供了三种选择方法:
select_by_index(index) ——通过选项的顺序,第一个为 0
select_by_value(value) ——通过value属性
select_by_visible_text(text) ——通过选项可见文本
同时,Select提供了四种方法取消选择:
deselect_by_index(index) --取消对应index选项
deselect_by_value(value) --取消对应value选项
deselect_by_visible_text(text) --取消对应文本选项
deselect_all() --取消所有选项
Select为你提供了相应的方法(或者应该说是属性了),用来查看选中了哪一项:
options ——提供所有的选项的列表,其中都是选项的WebElement元素
all_selected_options ——提供所有被选中的选项的列表,其中也均为选项的WebElement元素
first_selected_option ——提供第一个被选中的选项,也是下拉框的默认值
参考链接
https://www.cnblogs.com/yoyoketang/p/6128636.html
https://blog.csdn.net/huilan_same/article/details/52246012