python自动化测试——下拉框与选择框处理

1. 前言

       在html标签中,经常会遇到下拉框和单、多选框的组件,在之前的元素定位方法中,一般是选用 find_element 方法来定位某个特定的对象,但如果我们要定位一组对象时,这时我们就需要应用到层级定位和find_elements来定位了。

 

2. 操作举例

2.1 下拉框处理

下拉框如下图所示:

 

下拉框部分html代码如下:

<html>

    <body>
    
        <select id="shopping" name="Shopping">

        <option value="20%">20%</option>

        <option value="30%">30%</option>

        <option value="40%">40%</option>

        <option value="50%">50%</option>

        <option value="60%">60%</option>

        <option value="70%">70%</option>

        <option value="80%">80%</option>

        <option value="90%" selected="">90%</option>

        </select>

    </body>

</html>

根据网页上的html标签,根据元素定位方法和层级定位的方式,逐级定位:

# -*- coding:utf-8 -*-
from selenium import webdriver
#方式一:
#先定位到下拉框
m_driver=driver.find_element_by_id('shopping')
#再定位到下拉列表,选择80%的选项
m_driver.find_element_by_xpath("//option[@value='80%']]").click()
#方式二:
#在一行中同时定位到想要的元素
driver.find_element_by_id('shopping').find_element_by_xpath("//option[@value='80%']]").click()
#方式三:
#直接使用xpath进行定位,并选择80%的选项
driver.find_element_by_xpath("//select[@id='shopping']]/option[7]]").click()

 

 

2.2 多选框处理

多选框处理:即可以同时选择多个选项,如下图所示:

 

多选框的部分html代码如下:

<html> 
	<body> 
	<div class="shell">
		<form class="form-1">
			<div class="control-group">
				<label class="wt" for="c1">外套</label>
				<div class="controls">
					<input type="checkbox" id="la1" />
				</div>
			</div>
		<div class="control-group">
			<label class="cy" for="c2">衬衣</label>
				<div class="controls">
					<input type="checkbox" id="la2" />
				</div>
			</div>
		<div class="control-group">
			<label class="kz" for="c3">裤子</label>
				<div class="controls">
					<input type="checkbox" id="la3" />
				</div>
		</div>
		</form>
	</body>
</html>

 

对于多选框,我们要先找出多选框的所有元素,使用find_elements 来获取所有元素:

# -*- coding:utf-8 -*-
from selenium import webdriver
#方式一:
# 选择页面上所有的 tag name 为 input 的元素
inputs = driver.find_elements_by_tag_name('input')
#然后从中过滤出 tpye 为 checkbox 的元素,单击全部勾选
for input in inputs:
    if input.get_attribute('type') == 'checkbox':
        input.click()
#方式二:
# 选择所有的 type 为 checkbox 的元素并单击全部勾选
checkboxes = driver.find_elements_by_xpath(".//*[@type='checkbox']")
for checkbox in checkboxes:
    checkbox.click()
# 打印当前页面上 type 为 checkbox 的个数
print len(driver.find_elements_by_xpath(".//*[@type='checkbox']"))
# 把页面上最后1个 checkbox 的勾给去掉
driver.find_elements_by_xpath(".//*[@type='checkbox']").pop().click()

 

2.3 单选框处理

单选框顾名思义只能选择一个选项,如下图所示:

 

单选框的部分html代码如下:

<html> 
	<body> 
   </form>  
    <h4>单选:性别</h4>   
    <form id='form_id'>  
        <label value="radio">男</label>   
            <input name="sex" value="male" id="boy" type="radio"><br>  
        <label value="radio1">女</label>  
            <input name="sex" value="female" id="girl" type="radio">  
    </form>  
	</body>
</html>

对于单选框,我们可以通过元素定位直接获取元素:

# -*- coding:utf-8 -*-
from selenium import webdriver
# 单选框的话,只要定位到该元素直接点击即可
driver.find_element_by_id('boy').click()
#判断是否被选定
driver.find_element_by_id("boy").is_selected()

 

 


欢迎关注「技术分享交流」公众号 ,在公众号里会不定期更新干货内容,欢迎您的加入!

 

 

 

  • 7
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值