(六)自动化测试之selenium学习心得-选择框

一、radio框

radio框选择选项,直接用WebElement的click方法,模拟用户点击就可以了。

比如, 我们要在下面的html中:

先打印当前选中的老师名字
再选择 小雷老师

网页信息
<div id="s_radio">
<input type="radio" name="teacher" value="小江老师">小江老师<br>
<input type="radio" name="teacher" value="小雷老师">小雷老师<br>
<input type="radio" name="teacher" value="小凯老师" checked="checked">小凯老师
</div>
对应的代码如下

from selenium import webdriver

wd = webdriver.Chrome()
wd.implicitly_wait(10)
wd.get('http://cdn1.python3.vip/files/selenium/test2.html')

# 获取当前radio框默认选择值
elmt = wd.find_element_by_css_selector('#s_radio input[checked="checked"]')
elmt_value = elmt.get_attribute('value')
print('当前选中的是:' + elmt_value)

# 选择其他老师
wd.find_element_by_css_selector('#s_radio input[value="小雷老师"]').click()

 

 

二、checkbox框

对checkbox进行选择,也是直接用 WebElement 的 click 方法,模拟用户点击选择。

需要注意的是,要选中checkbox的一个选项,必须 先获取当前该复选框的状态 ,如果该选项已经勾选了,就不能再点击。否则反而会取消选择。

比如, 我们要在下面的html中:选中 小雷老师

<div id="s_checkbox">
<input type="checkbox" name="teacher" value="小江老师">小江老师<br>
<input type="checkbox" name="teacher" value="小雷老师">小雷老师<br>
<input type="checkbox" name="teacher" value="小凯老师" checked="checked">小凯老师
</div>
我们的思路可以是这样:

先把 已经选中的选项全部点击一下,确保都是未选状态
再点击 小雷老师 小江老师

代码如下:

from selenium import webdriver

wd = webdriver.Chrome()
wd.implicitly_wait(10)
wd.get('http://cdn1.python3.vip/files/selenium/test2.html')

# 复选框选择思路:先把已经选中的选项全部点击一下,确保都是未选状态,再进行选择
elmts = wd.find_elements_by_css_selector('#s_checkbox input[checked="checked"]')
for elmt in elmts:
elmt.click()

wd.find_element_by_css_selector('#s_checkbox input[value="小雷老师"]').click()
wd.find_element_by_css_selector('#s_checkbox input[value="小江老师"]').click()

 

 

三、select框

 

radio框及checkbox框都是input元素,只是里面的type不同而已。

select框 则是一个新的select标签,大家可以对照浏览器网页内容查看一下

对于Select 选择框, Selenium 专门提供了一个 Select类 进行操作。

Select类 提供了如下的方法

select_by_value
根据选项的 value属性值 ,选择元素。

比如,下面的HTML,

<option value="foo">Bar</option>
就可以根据 foo 这个值选择该选项,

s.select_by_value('foo')

select_by_index
根据选项的 次序 (从0开始),选择元素


select_by_visible_text
根据选项的 可见文本 ,选择元素。

比如,下面的HTML,

<option value="foo">Bar</option>
就可以根据 Bar 这个内容,选择该选项

s.select_by_visible_text('Bar')

deselect_by_value
根据选项的value属性值, 去除 选中元素


deselect_by_index
根据选项的次序,去除 选中元素


deselect_by_visible_text
根据选项的可见文本,去除 选中元素


deselect_all
去除 选中所有元素

 3.1Select单选框

代码例子如下:

from selenium import webdriver
# 导入Select类
from selenium.webdriver.support.ui import Select

wd = webdriver.Chrome()
wd.implicitly_wait(10)
wd.get('http://cdn1.python3.vip/files/selenium/test2.html')

# select单选框,直接用Slecet方法选择即可
# 创建Select对象
selct = Select(wd.find_element_by_id('ss_single'))
# 通过对象选中小雷老师
selct.select_by_value('小雷老师')

3.2、Select多选框

对于select多选框,要选中某几个选项,要注意去掉原来已经选中的选项。


例如,我们选择示例多选框中的 小雷老师 和 小凯老师


可以用select类 的deselect_all方法,清除所有 已经选中 的选项。

代码例子如下:

from selenium import webdriver
# 导入Select类
from selenium.webdriver.support.ui import Select

wd = webdriver.Chrome()
wd.implicitly_wait(10)
wd.get('http://cdn1.python3.vip/files/selenium/test2.html')

# select单选框,直接用Slecet方法选择即可
# 创建Select对象
selct = Select(wd.find_element_by_id('ss_multi'))

# 清除所有已经选中的选项
selct.deselect_all()

# 通过对象选中小雷老师
selct.select_by_value('小雷老师')
selct.select_by_value('小江老师')

 
posted @ 2021-04-01 14:49  糖糖来迟  阅读(198)  评论(0)    收藏  举报