python+selenium 对下拉框的处理

 

一:固定选择某一选项。利用二次定位的方法,先定位该下拉框,然后定位具体的选项

rzmd = driver.find_element_by_id("rzmd")

rzmd.find_element_by_xpath("//option[@value='luhff5fclyys95vz_继续教育']").click()

二:随机选择某一选项。该方法利用的也是重复定位的方法,只是二次定位时定位到的是一组option,通过random.choice()方法随机选择

select = driver.find_element_by_id("rzmd")

alloptions = select.find_elements_by_tag_name("option")

readom.choice(alloptions).click()

三:遍历下拉选项。get_attribute()方法返回指定属性名的属性值

select = driver.find_element_by_id("rzmd")

alloptions = select.find_elements_by_tag_name("option")

for option in alloptions:

  print "value is:%s" % option.get_attribute("value")

  option.click()

 


 

使用Select 第三方库定位下拉框 

部分源码

 

 

 

 操作步骤:

 

第一步,先导入Select 第三方包
第二步 创建select实例
第三步 根据Select提供的三种定位方式匹配下拉选项
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
from webdriver_manager.chrome import ChromeDriverManager

# driver = webdriver.Chrome()
driver = webdriver.Chrome(ChromeDriverManager( ).install())
driver.get('https://yz.chsi.com.cn/zsml/zyfx_search.jsp')
"""
#创建select实例,先定位下拉框
select = driver.find_element(By.ID,'ssdm')

# 通过select_by_value()方法获取下拉框选项的value值
Select(select).select_by_value('11')

#通过select_by_visible_text()方法获取下拉框选项文本内容
select1=driver.find_element(By.ID,'mldm')
Select(select1).select_by_visible_text('(02)经济学')

#通过select_by_index()方法获取下拉框选项索引,index后的索引是从0开始,选择1则表示选择第二个选项。
select2=driver.find_element(By.ID,'yjxkdm')
Select(select2).select_by_index('1')

time.sleep(2)
driver.find_element(By.NAME,'button').click()

随机选择下拉框中的一个选项

思路:

1.先定位到需要选择的下拉框
2.利用options方法获取到下拉框的所有选项
3.通过len方法获取到选项个数,然后通过uniform生成浮点型的随机数,在通过int转换成整数
4.使用select_by_index索引定位法进行选择

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select
import time
import random
driver=webdriver.Chrome()
#登录
driver.get("https://yz.chsi.com.cn/zsml/zyfx_search.jsp")

#定位到所在省市下拉框
s1=Select(driver.find_element_by_id('ssdm'))
#通过options方法获取到下拉框的所有选项
ops=s1.options
#先通过len方法返回选项个数,然后通过uniform生成浮点型的随机数,在通过int转换成整数
sjs=int(random.uniform(1,len(ops)))
#最后一步通过下标选择法,将生成的随机数传给select_by_index
s1.select_by_index(sjs)

全选下拉框中的选项

思路:
1.仍旧通过options获取下拉框所有选项,并通过len返回下拉框的长度;
2.利用python内置的range()函数生成数列;
3.利用for循环遍历该数列,并通过select_by_index()选中下拉选项。

s1=Select(driver.find_element_by_id('ssdm'))
ops=s1.options
sjs=len(ops)
For i in range(sjs):
    s1.select_by_index(i)
time.sleep(2)

 

 

 

 

posted @ 2017-08-02 14:33  小小小小鸟儿  阅读(504)  评论(0编辑  收藏  举报