webdriver--单选、复选及下拉框的定位
- 单选radiobutton的操作
两种情况,一种是各个button元素的属性都有唯一定位值,可以直接用属性唯一值定位;另一种就是一组各方面属性值都一样的radiobutton,除了text,可以用组元素定位来操作
#检测任务下各题型的radiobutton有唯一id值 driver.find_element_by_css_selector("#sinquestion").click()#选择检测任务:单选题 #基础信息下的各学科radiobutton全都一样,组定位.两种方式 driver.find_elements_by_css_selector("[name=SubjectName]").pop(1).click() driver.find_elements_by_css_selector("[name=SubjectName]")[1].click()
- 复选checkbox的操作
#推送范围,遍历访问的方式全部勾选 for push in driver.find_elements_by_name("GroupName"): push.click() time.sleep(1)
单个勾选的话也可以用下标索引和pop()索引来处理
- 下拉框的定位:select > option*x 结构,
1. 定位父元素select,然后通过tag name找到所有option,得到option元素的数组,然后通过数组索引([1])定位,最后click.
driver.find_element_by_id("BookName").find_elements_by_tag_name("option")[1].click()#选择下拉框的第一个教材
driver.find_element_by_id("BookName").find_elements_by_css_selector("[value=1419]").click()
2. 用到了Select类, 实例select对象有很多方法:
deselect_all(),全不选。
deselect_by_index(index),不选index 项,index从0 还是从1 开始了。
deselect_by_value( value),不选元素value属性为value的项,听着有点拗口,其实value值就是option标签中value的值。
deselect_by_visible_text( text),不选标签innerHTML为text的option
select_by_index( index),同上,选择第 index 项。这个用于 option的text和value不固定的情况
select_by_value( value), 同上,选择。
select_by_visible_text( text),同上,选择。
1 #使用前需先引入Select类 2 from selenium.webdriver.support.ui import Select 3 4 select = Select(driver.find_element_by_id("BookName")) 5 select.deselect_all()#大体意思是应该是先清空再选择,已经尝试过删除这句也可以选择成功,可能还没遇到失败的情况
6 select.select_by_visible_text("我们版初中七年级语文上册")