一、认识select

from selenium.webdriver.support.select import Select

 

1、例子:打开百度 - 设置 - 搜索设置界面,如图:

python+selenium下拉菜单列表选项定位_1.10

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条 的选项

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

相关文章: