一、认识select
from selenium.webdriver.support.select import Select
1、例子:打开百度 - 设置 - 搜索设置界面,如图:
2、设置条数的下拉框,下拉框元素定位,可以看到 select 标签属性 <select id="nr" name="NR">
3、选项有三个
二、举例:怎么定位 select 框,定位 select 里的选项
1、通过二次定位来选择下拉框的选项
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver=webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.implicitly_wait(20) #等待20秒
mouse=driver.find_element_by_link_text("设置") #定位 设置 按钮
ActionChains(driver).move_to_element(mouse).perform() #鼠标悬停在 设置 按钮
driver.find_element_by_link_text("搜索设置").click() #点击设置按钮下的 搜索链接
driver.find_element_by_id("nr") #定位下拉框
driver.find_elements_by_tag_name('option')[1].click() #获取下拉框第二个选项
driver.find_element_by_xpath("//option[@value='50']").click() #获取下拉框值包含50的选项
driver.find_element_by_css_selector("[value='20']").click()
driver.find_element_by_css_selector("html body div#wrapper div.bdlayer.pfpanel div.pfpanel-bd div.pftab div.pftab_bd div#general.item.cur form div.search-setting table#gxsz tbody tr td#se-setting-3 select#nr option").click()
driver.find_element_by_css_selector("[value='20']").click() #获取下拉框值得几种写法
还有另外一种写法也是可以的,把最下面两步合并成为一步:
driver.find_element_by_id("nr").find_element_by_xpath("//option[@value='50']").click()
2、select 模块方法:
|
select_by_index() |
通过索引定位 |
|
select_by_value() |
通过value值定位 |
|
select_by_visible_text() |
通过文本值定位 |
|
deselect_all() |
取消所有选项 |
|
deselect_by_index() |
取消对应index选项 |
|
deselect_by_value() |
取消对应value选项 |
|
deselect_by_visible_text() |
取消对应文本选项 |
|
first_selected_option() |
返回第一个选项 |
|
all_selected_options() |
返回所有的选项 |
1、导入 select 方法:
from selenium.webdriver.support.select import Select
2、定位方法:
(1)通过 select 选项的索引来定位选择对应选项(从0开始计数),如选择第三个选项:select_by_index(2)
(2)通过选项 value 值来定位,每个选项都有对应的 value 值,如:
<select id="nr" name="NR">
<option selected="" value="10">每页显示10条</option>
<option value="20">每页显示20条</option>
<option value="50">每页显示50条</option>
第二个选项对应的value值就是"20":select_by_value("20")
(3)通过选项的文本内容来定位
定位“每页显示50条”:select_by_visible_text("每页显示50条")
举例:
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
mouse=driver.find_element_by_link_text("设置")
ActionChains(driver).move_to_element(mouse).perform()
driver.find_element_by_link_text("搜索设置").click()
a=driver.find_element_by_id('nr') #定位下拉框
Select(a).select_by_value("20") #选择下拉框 value的值为20
Select(a).select_by_index(0) #选择索引为第一个的选项
b=Select(driver.find_element_by_id('nr')) #定位下拉框
b.select_by_visible_text("每页显示50条") #选择文本值为:每页显示50条 的选项