除了输入框操作,听说你还会...

之前,我们主要学习的是对输入框进行操作。而通过本节内容的学习,你将掌握更多的控件定位技能,准备好了嘛,快和我一起吧~

一、单选和复选

首先让我们来认识一下单选框和复选框。
在这里插入图片描述
单选框在页面中的显示为圆圈,复选框在页面中的显示为方框。

<!DOCTYPE html>
<html>
    <meta charset="UTF-8">
<body>
	<!-- 单选框 -->
	<div id="sex">
		<span>性别:</span>
		<label><input id="boy" type="radio" name="sex" value="男生" checked>男生</label>
		<label><input id="girl" type="radio" name="sex" value="女生">女生</label>
	</div>
	<!-- 复选框 -->
	<div id="hobby">
		<span>爱好:</span>
		<label><input type="checkbox" name="music" value="0">音乐</label>
		<label><input type="checkbox" name="travel" value="1">旅游</label>
        <label><input type="checkbox" name="shopping" value="2">购物</label>
	</div>
</body>
</html>

编写前端代码时,单选框的type属性为"radio",而复选框的type属性为"checkbox"。针对上述html页面编写自动化测试脚本:

# 1.导入selenium
from selenium import webdriver
from time import sleep
import os
# 2.打开浏览器——谷歌浏览器
driver = webdriver.Chrome("./chromedriver")
# 3.输入网址
url = "file:///" + os.path.abspath("sd.html")
driver.get(url)
sleep(3)

# 4.1 单选框操作
# 4.1.1 定位男生,女生
boy = driver.find_element_by_id("boy")
girl = driver.find_element_by_id("girl")
# 4.1.2 点击单选框
if boy.is_selected():
    print("已经选中,不必点击")
else:
    boy.click()
if girl.is_selected():
    print("已经选中,不必点击")
else:
    girl.click()
    
# 4.2 复选框操作
# 4.2.1 定位所有复选框
boxes = driver.find_elements_by_css_selector("input[type='checkbox']")
# 4.2.2 遍历点击
for box in boxes:
	if box.is_selected(): # 判断是否被选中
		pass
	else:
		box.click()
		sleep(1)
sleep(5)
# 5.关闭浏览器
driver.quit()

执行完成后的页面效果:
在这里插入图片描述
总结一下:
1.对于单选框的操作:先定位后点击,在点击前需要判断元素是否被选中,使用ele.is_selected的方法。
2.对于复选框的操作:
① 只选择一个:操作同单选框一样
② 全选:使用find_elements复数定位方式,返回列表。因此就需要通过for循环进行遍历,判断每一个复选框是否被选中,未被选中的就执行点击操作。

拓展一下:
如果只想选择部分又该如何操作呢?

# 4.2.1 定位所有复选框
boxes = driver.find_elements_by_css_selector("input[type='checkbox']")
# 需要选择的复选框
checkboxes = ["1","2"]
# 4.2.2 遍历点击
for box in boxes:
    if box.get_attribute("value") in checkboxes:  # 点击需要的选项
        if box.is_selected(): # 判断是否被选中
            pass
        else:
            box.click()
            sleep(1)

将需要选择的复选框以列表的形式集中起来,在遍历的时候先找到需要点击的选项,如果未被选中,就去执行点击操作。

二、下拉菜单

以携程网为例,看到【酒店级别】下拉框代码是由select标签和option标签组成的。
在这里插入图片描述
因此,我们可以先定位主元素——select标签,再定位子元素——option标签。代码编写如下:

# 1.导入selenium
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.keys import Keys
# 2.打开浏览器——谷歌浏览器
driver = webdriver.Chrome("./chromedriver")
driver.maximize_window() # 窗口最大化
# 3.输入网址
driver.get("https://www.ctrip.com")
sleep(3)
# 4.元素定位——二次定位
# 4.1 定位主元素——select标签
level = driver.find_element_by_id("searchHotelLevelSelect")
# 4.2 定位子元素——option——四星级/高档
fourth = level.find_element_by_css_selector("option[value='4']")
fourth.click()
sleep(3)
# 6.关闭浏览器
driver.quit()

如果是ul标签和li标签实现的下拉框,同样也需要二次定位哦~当然啦,除了二次定位的方法,selenium还提供了Select类供我们调用,只需要在开头引入:

from selenium.webdriver.support.select import Select

在使用过程中,还是需要先定位到Select标签。然后通过Select(ele).select_by_xx的方式就能实现啦。

# 4.元素定位——select标签
level = driver.find_element_by_id("searchHotelLevelSelect")
# 5.使用select类操作下拉菜单
# 5.1 通过选项中标签的value值选择
Select(level).select_by_value("4") # 选择四星级/高档
sleep(5)
# 5.2 通过索引选择
Select(level).select_by_index(3) # 选择三星级/舒适
sleep(5)
# 5.3 通过选项的文本内容选择
Select(level).select_by_visible_text("二星级以下/经济")

这里主要通过value值、索引值、选项的文本内容这三种方式来进行选择。

三、上传文件

上传文件的操作与输入框的操作类似。

# 定位到文件上传按钮
file_up = driver.find_element_by_css_selector("css表达式")
file_up.send_keys(r"文件所在路径")

注意一下:
1.在测试过程中需要对文件类型、大小等做充分验证。
2.在执行上传文件脚本时,需要加上一定的等待时间。
3.大部分上传文件都是input类型并且type=file。
4.对于非input类型的上传文件功能,使用SendKeys库来实现,不过这种场景不是十分常见。

四、饭后总结

本节内容主要介绍了单选与复选、下拉菜单、上传文件的操作。事实上,手工能够执行的操作,自动化测试基本都可以模拟完成。而你也终于不再是那个只会输入框操作的你了,又成长了不少呢。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值