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)