python selenium 下拉列表_python+selenium下拉列表option对象操作方法一

参考官方文档:https://selenium.dev/selenium/docs/api/py/webdriver_support/selenium.webdriver.support.select.html?highlight=all_selected_options#selenium.webdriver.support.select.Select.all_selected_options

一、导入(import)

from selenium.webdriver.support.select import Select

二、选择(select)

Select类提供了三种选择某一选项的方法:

select_by_index(index)

select_by_value(value)

select_by_visible_text(text)

注意:

index从 0 开始

value是option标签的一个属性值,并不是显示在下拉框中的值

visible_text是在option标签中间的值,是显示在下拉框的值

三、反选(deselect)

有选择必然有反选,即取消选择。Select提供了四个方法给我们取消原来的选择:

deselect_by_index(index)

deselect_by_value(value)

deselect_by_visible_text(text)

deselect_all()

前三种分别于select相对应,第四种是全部取消选择,是的,你没看错,是全部取消。

有一种特殊的select标签,即设置了multiple=”multiple”属性的select,这种select框是可以多选的,

可以通过多次select,选择多项选项,而通过deselect_all()来将他们全部取消。

注意:下面两个,表示的意思一样

#返回第一个或者当前 被选中 的子项

print(Select(driver.find_element_by_xpath("//select[@id='nr']")).first_selected_option.text)

# 输出当前选择的第一项,即显示第二个

now = Select(driver.find_element_by_css_selector("body > form > select")).first_selected_option

print(now.text)

================================================================================

from selenium import webdriver

from selenium.webdriver.common.action_chains import ActionChains

#from selenium.webdriver.support.select import Select

from selenium.webdriver.support.ui import Select

from time import sleep

driver = webdriver.Firefox()

driver.implicitly_wait(10)

driver.get('http://www.baidu.com')

#--------------------------------------------------------------------------------

link = driver.find_element_by_link_text("设置")

ActionChains(driver).move_to_element(link).perform() #鼠标悬停在上面

sleep(5)

driver.find_element_by_class_name("setpref").click() # 打开搜索设置

sleep(2)

#-------------------------------------------------------------------------

sleep(3)

print('显示第二个子项(2):')

Select(driver.find_element_by_xpath("//select[@id='nr']")).select_by_index(1) #选择第二个options子项 ,每页显示20条

print(Select(driver.find_element_by_xpath("//select[@id='nr']")).first_selected_option.text) #返回第一个或者当前 被选中 的子项

sleep(3)

print('显示第三个子项(50):')

Select(driver.find_element_by_xpath("//select[@id='nr']")).select_by_value('50') #选择value为'每页显示50条'的子项,即选择第三个子项

print(Select(driver.find_element_by_xpath("//select[@id='nr']")).first_selected_option.text) #返回第一个或者当前 被选中 的子项

sleep(3)

print('显示第二个子项(20):')

Select(driver.find_element_by_xpath("//select[@id='nr']")).select_by_visible_text('每页显示20条') #选择text值为'每页显示20条'的子项

print(Select(driver.find_element_by_xpath("//select[@id='nr']")).first_selected_option.text) #返回第一个或者当前 被选中 的子项

sleep(3)

print('显示当前被选中的子项(第二个子项20):')

print(Select(driver.find_element_by_xpath("//select[@id='nr']")).first_selected_option.text) #返回第一个或者当前 被选中 的子项 #每页显示20条

#-------------------------------------------------------------------------------------

options = driver.find_elements_by_xpath('//*[@id="nr"]/option')

options[1].click() #第二个子项被选中

sleep(2)

options[2].click() #第三个子项被选中

sleep(2)

options[0].click() #第一个子项被选中

sleep(2)

#-----------------------------------------------------------------------

print(options[0].text)

print(options[1].text)

print(options[2].text)

#-----------------------------------------------------------------------

driver.quit()

显示第二个子项(2):

每页显示20条

显示第三个子项(50):

每页显示50条

显示第二个子项(20):

每页显示20条

显示当前被选中的子项(第二个子项20):

每页显示20条

每页显示10条

每页显示20条

每页显示50条

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

===============================================================================================================

from selenium import webdriver

from selenium.webdriver.support.ui import Select

from time import sleep

driver = webdriver.Firefox()

driver.get("https://www.runoob.com/runcode") # 打开浏览器,进入演示页面

driver.find_element_by_css_selector("#codeinp").clear() # 定位输入框文本域 # 清空文本域

# 输入多选下拉框的演示源码 (multiple="multiple\")

texts = " " \

"

Volvo" \

"SaabFiat\" \

\"Audi

"

driver.find_element_by_css_selector("#codeinp").send_keys(texts)

driver.find_element_by_css_selector("#btrun").click() # 点击提交代码

sleep(2)

#--------------------------------------------------------------------------------------------------------

all_handles = driver.window_handles

driver.switch_to.window(all_handles[1]) #切换到新的打开的运行页面

#-------------------------------------------------------------------------------------------------------

# 选择全部的选项(多选),一个接着一个选择,直到全部选择

Select(driver.find_element_by_css_selector("body > form > select")).select_by_index(0)

sleep(1)

Select(driver.find_element_by_css_selector("body > form > select")).select_by_index(1)

sleep(1)

Select(driver.find_element_by_css_selector("body > form > select")).select_by_index(2)

sleep(1)

Select(driver.find_element_by_css_selector("body > form > select")).select_by_index(3)

sleep(1)

#----------------------------------------------------------------------------------------------------------------

# 取消选择第一项选项(页面上可以观察到变化)

Select(driver.find_element_by_css_selector("body > form > select")).deselect_by_index(0)

sleep(1)

# 输出当前选择的第一项,即显示第二个

now = Select(driver.find_element_by_css_selector("body > form > select")).first_selected_option

print(now.text)

#取消第二个选项

#Select(driver.find_element_by_css_selector("body > form > select")).deselect_by_value('\"saab\"')

Select(driver.find_element_by_css_selector("body > form > select")).deselect_by_visible_text('Saab')

sleep(3)

#即取消三、四选项

Select(driver.find_element_by_css_selector("body > form > select")).deselect_all() #取消所有选项

sleep(3)

#---------------------------------------------------------------------------------------------------------

driver.close()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值