selenium---下拉框处理(select)  web⾃动化中,常见的场景还有⼀个下拉框的选择,哪么在selenium中如何做下拉框的操作呢?select
select在HTML中表⽰元素名,可创建单选或多选菜单。
HTML中select长什么样⼦:
select在HTML中元素名,下⾯有选择操作,选择内容在select中包含
<html>
<body>
<form>
<center>
<select name="anjing">
<option value="boke">请关注安静博客</option>
<option value="study">今天学习了吗?</option>
<option value="daily">今天看安静博客了吗?</option>
<option value="like">点赞了吗?</option>
<option value="attention">关注了吗?</option>
</center>
</select>
</form>
</body>
</html>
select操作⽅法
selenium中想要操作下拉框需要导⼊新的模块from selenium.webdriver.support.select import Select Select有以下操作⽅法:
⽅法说明
select_by_index()通过索引定位
select_by_value() 通过value值定位
select_by_visible_text()通过⽂本值定位
deselect_all()取消所有选项
selenium xpath定位deselect_by_index() 取消对应index选项
deselect_by_value()  取消对应value选项
deselect_by_visible_text() 取消对应⽂本选项
first_selected_option() 返回第⼀个选项
all_selected_options() 返回所有的选项
options()返回所以的选择项
all_selected_options()返回所以已选中的选择项
first_selected_option()返回选中的第⼀个选择项
⼩试⽜⼑
⽅法也认识了,select也知道是什么样⼦的了,那么我们开始进⾏操作
1、想要操作select,⾸先定位到select上,然后进⾏实例化
2、通过Select进⾏通过下标,value,text进⾏定位下拉框
3、加⼊判断预期值是否切换到下拉框中
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.select import Select
from selenium.webdrivermon.by import By
import time
driver = webdriver.Chrome()
path = r'E:\web\select.html'
<(path)
# 通过显⽰等待的⽅法判断元素是否出现
WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.NAME,"anjing")))
select = driver.find_element_by_name('anjing')
# 根据下标进⾏选择,从0开始
Select(select).select_by_index(1)
time.sleep(2)
# 根据value的值选择
Select(select).select_by_value('daily')
time.sleep(2)
# 根基text选择
Select(select).select_by_visible_text('关注了吗?')
time.sleep(2)
# 判断选择是否预期
WebDriverWait(driver,20).until(EC.element_located_to_be_selected((By.XPATH,'//*[contains(text(),"关注了")]')))
展⽰图:
这⾥安静主要通过⼀个⼩的例⼦,然后如何通过Selenium操作下拉框的⼩案例。这⾥安静提⽰⼤家,如果遇到哪些没有见过的库,可以去看看源码,其实源码中已经写的很清楚了。
这⾥安静写的⽂章如果对您有帮助,点个关注,持续更新。不懂的或者写错的地⽅,可以下⽅留⾔。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。