常见选择框包括:radio框,checkbox框,select框。
一、radio框(单选框)
若要选中其中的一个,有基础的两种方式:
* 基于input的属性,checked给默认选中状态(原网页所给的默认值,无法自己更改);
* 用WebElement的click方法,模拟用户点击;
1 //HTML: 2 <div id="s_radio"> 3 <input type=""radio" name="teacher" value="小江老师">小江老师</div> 4 <input type=""radio" name="teacher" value="小雷老师">小雷老师</div> 5 <input type=""radio" name="teacher" value="小凯老师" checked="checked">小凯老师</div> 6 </div>
1 from selenium import webdriver 2 wd=webdriver.Firefox(executable_path=t'D:BrowserDrivergeckodriver.exe') 3 wd.get('http://cdn1.python3.vip/files/selenium/test2.html') 4 element=wd.find_element_by_css_selector('#s_radio input[checked="checked"]') 5 print('这里选中的是:',element.get_attribute('value')) 6 wd.find_element_by_css_selector('#s_radio input[value="小江老师"]').click()
二、checkbox框(复选框)
方法同上,click方法模拟用户点击选择。
注意:要选中checkbox中的一个选项,必须先获取当前该复选框的状态(若该选项已勾选了,就不能再点击,否则反而会取消选择)
1 <div id="s_checkbox"> 2 <input type="checkbox" name="teacher" value="小江老师">小江老师<br> 3 <input type="checkbox" name="teacher" value="小雷老师">小雷老师<br> 4 <input type="checkbox" name="teacher" value="小凯老师" checked="checked">小凯老师 5 </div>
1 from selenium import webdriver 2 wd = webdriver.Firefox(executable_path=r'D:BrowserDrivergeckodriver.exe') 3 wd.get('http://cdn1.python3.vip/files/selenium/test2.html') 4 # 先把已经选中的选项全部点击一下 5 elements = wd.find_elements_by_css_selector('#s_checkbox input[checked="checked"]') 6 for element in elements: 7 element.click() 8 # 再点击 小雷老师 9 wd.find_element_by_css_selector('#s_checkbox input[value="小雷老师"]').click()
三、select框
select是个新的select标签,对于select选择框,Selenium提供了Select类进行操作。
方法:
1. select_by_value : 根据选项的value属性值,选择元素;
=> deselect_by_value : 根据选项的value属性值,去除选中元素;
2. select_by_index : 根据选项的次序(从0开始),选择元素;
=> deselect_by_index : 根据选项的次序,去除选中元素;
3. select_by_visible_text : 根据选项的可见文本,选择元素;
=> deselect_by_visible_text : 根据选中的可见文本,去除选中元素;
4. deselect_all :去除选中所有元素;
1)select单选框:不管原来选的是什么,直接使用Select方法选择即可。
1 from selenium import webdriver 2 # 导入Select类 3 from selenium.webdriver.support.ui import Select 4 wd=webdriver.Firefox(executable_path=r'D:BrowserDrivergeckodriver.exe') 5 wd.get('http://cdn1.python3.vip/files/selenium/test2.html') 6 # 创建一个select对象 7 select=Select(wd.find_element_by_id('ss_single')) 8 # 通过Select对象选中小江老师 9 select.select_by_visible_text('小雷老师')
2)select多选框:这个选择要注意先去掉原来已选中的选项
1 from selenium import webdriver 2 from selenium.webdriver.support.ui import Select 3 wd = webdriver.Firefox(executable_path=r'D:BrowserDrivergeckodriver.exe') 4 wd.get('http://cdn1.python3.vip/files/selenium/test2.html') 5 select=Select(wd.find_element_by_id('ss_multi')) 6 # 清楚所有的选中项 7 select.deselect_all() 8 # 选择小江老师和小雷老师 9 select.select_by_visible_text('小江老师') 10 select.select_by_visible_text('小雷老师')