selenium常用操作之下拉框操作
Posted 123blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium常用操作之下拉框操作相关的知识,希望对你有一定的参考价值。
下拉框操作:
一般下拉框适用场景:在新增时有下拉框选项,在二级联动或多级联动有下拉(比如:在选择省市县时的多级联动下拉、日期控件等)。
一般下拉框功能有以下两个:
1.菜单栏-点击其中的某个链接跳转
2.对下拉列表的元素进行操作。
下拉框选择都有select的标签属性,存在两个属性select和option。有的呈现的是下拉框样式但没有select属性的比如说或ul/li。
思路:
1.等待下拉列表和下拉列表出现
2.对下拉列表的元素进行操作
下拉框操作流程:
1.获取所有的下拉列表值,然后用循环去匹配相同的值;
2.通过text的内容来找到下拉列表的某个值
示例代码:
#等待下拉框元素出现后点击 WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,‘//a[contains(text(),"课程")]‘))) driver.find_element_by_xpath(‘//a[contains(text(),"课程")]‘).click()
3.如果是select/option组合,则可以使用Select类来处理。
示例代码:
from selenium.webdriver.common.action_chains import ActionChains #1.实例化鼠标类 ac=ActionChains(driver) #2.调用各种鼠标行为后,调用perform()来执行 ac.move_to_element_with_offset(driver.find_element_by_xpath(‘//div[@id="u"]/*[@name="tj_login"]‘)).perform() from selenium.webdriver.support.ui import Select #1.实例化select类 select=Select(driver.find_element_by_id("su")) #2.根据下标来选择 select.select_by_index(2) #3.根据option的value值来选择 select.select_by_visible_text("高级搜索")
以下是网上其他文章中介绍的。可以参考下:
其类型有:
①单选下拉框,可以选择一个元素。
②多选下拉框,可以选择多个元素。
定位方法:
①直接定位
②二次定位。先定位到select框,再定位到select选项。
③导入Select模块(推荐使用) -- 根据属性或者索引来定位。
先要导入Select方法 from selenium.webdriver.support.ui import Select 。
然后通过索引:s = driver.find_element_by_id(‘nr‘)
Select(s).select_by_index(2)
通过value值定位:s = driver.find_element_by_id(‘nr‘)
Select(s).select_by_value(‘20‘)
通过text值来定位:s = driver.find_element_by_id(‘nr‘)
Select(s).select_by_visible_text(‘宝马‘)
下面附上ms.html代码截图:
通过selenium实现:
import time
from selenium import webdriver
from selenium.webdriver.support.ui import Select # 导入Select模块
# 指定驱动
driver = webdriver.Chrome(r"C:webdriverchromedriver.exe")
# 打开网址
driver.get(‘file:///C:/UsersAdministrator/PycharmProjects/1120/web_driver/lesson3/ms.html‘)
# 获得相应的webElement
select = Select(driver.find_element_by_id(‘multi‘))
# 先取消所有选择的选项
select.deselect_all()
# 根据text值定位
select.select_by_visible_text(‘雅阁‘)
select.select_by_visible_text(‘宝马 740‘)
# 获得相应的webElement
select = Select(driver.find_element_by_id(‘single‘))
# 根据value值定位
select.select_by_value(‘male‘)
driver.quit()
以上是关于selenium常用操作之下拉框操作的主要内容,如果未能解决你的问题,请参考以下文章