Html页面中的单选按钮、复选框、下拉框均可通过WebDriver实现操做。本节结合案例一起来看看WebDriver如何操做这些控件。


同步视频知识与系列知识内容,可关注:【公众号】:柒哥测试;【WX】:Lee-890;

1.设计Html测试页面

设计Html的页面命名为Radio&Select&CheckBox.html,代码如下:

<html>
<head>
<title>单选|复选|下拉框</title>
</head>
<style>
.box{
width:500px;height:800px;
margin:20px auto;
text-align:center;
}
</style>
<body>
<div class="box">
</form>
<h4>单选:Radio</h4>
<form>
<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> <h4>复选框:CheckBox</h4>
<form>
<input id="c1" type="checkbox">Java<br>
<input id="c2" type="checkbox">Python<br>
<input id="c3" type="checkbox">C++<br>
</form> <h4>下拉框:Select</h4>
<label>籍贯</label>
<select name="site">
<option value="0">北京</option>
<option value="1">上海</option>
<option value="2">深圳</option>
</select>
</div>
</body>
</html>

Radio&Select&CheckBox.html页面效果如图所示。可以看到页面中包含了单选按钮、复选框、下拉框控件。

1.1 单选按钮:Radio

案例要求:

  • 首先是定位选择框的位置。
  • 通过id,先定位女(id为"girl");再定位男(id为" boy ")。

    实现代码如下所示。
from selenium import webdriver
from time import sleep driver=webdriver.Firefox()
driver.get("file:///D:/Radio&Select&CheckBox.html")
driver.find_element_by_id("girl").click()
sleep(2)
driver.find_element_by_id("boy").click()
sleep(2)
driver.quit()

运行代码可以观察到先选中【女】,然后再去选中【男】。

1.2 复选框:checkbox

案例要求

勾选单个复选框。

勾选全部复选框。

选中单个复选框,代码如下:

from selenium import webdriver
from time import sleep driver=webdriver.Firefox()
driver.get("file:///D:/Radio&Select&CheckBox.html") # 通过id定位选中单个复选框
# driver.find_element_by_id("c1").click() #选中Java
sleep(2)
driver.quit()

选中所有复选框,代码如下:

from selenium import webdriver
from time import sleep driver=webdriver.Firefox()
driver.get("file:///D:/Radio&Select&CheckBox.html") #全部勾选,通过find_elements_by_xpath()方法,选中type相同的
checkboxs=driver.find_elements_by_xpath(".//*[@type='checkbox']")
for i in checkboxs:
if i.get_attribute('type') == 'checkbox':
i.click()
sleep(2)
driver.quit()

选中所有复选框,然后再将最后1个复选框去掉,代码如下:

from selenium import webdriver
from time import sleep driver=webdriver.Firefox()
driver.get("file:///D:/Radio&Select&CheckBox.html") #全部勾选,通过find_elements_by_xpath()方法,选中type相同的
checkboxs=driver.find_elements_by_xpath(".//*[@type='checkbox']")
for i in checkboxs:
if i.get_attribute('type') == 'checkbox':
i.click() # sleep(2)
#将最后选中的复选框再取消掉
driver.find_elements_by_xpath(".//*[@type='checkbox']").pop().click()
sleep(1)
driver.quit()

1.3 Is_selected()方法

Is_selected()方法在复选框中常常用到,有时候复选框本身就是【选中】的状态,如果再次单击,就变为【未被选中】的状态了,这样就不是我们所期望的状态了。

那可不可以当复选框没选中的时候,再去单击(click)下;当它已经是选中状态,就不再单击呢? is_selected()方法检查是否选中该元素,一般针对单选框,复选框,其返回的结果是Bool 值,所以可通过Is_selected()方法判断元素是否被选中。

通过is_selected()方法先检查复选框是否被选中,如被选中则结束代码运行,如未被选中则执行选中操做,代码如下:

from selenium import webdriver
from time import sleep driver=webdriver.Firefox()
driver.get("file:///D:/Radio&Select&CheckBox.html") EleIsSelectedValue = driver.find_element_by_id('c1').is_selected()
if EleIsSelectedValue == True:
print(EleIsSelectedValue)
else:
driver.find_element_by_id('c1').click()
NewEleIsSelectedValue = driver.find_element_by_id('c1').is_selected()
print(NewEleIsSelectedValue)
sleep(2)
driver.quit()

1.4 下拉框:Select

案例要求:

选中下拉框的第2个值【上海】

根据前面所学的知识,可以通过直接定位进行选择,通过层级进行选择,代码如下:

from selenium import webdriver
from time import sleep driver=webdriver.Firefox()
driver.get("file:///D:/Radio&Select&CheckBox.html") # 方式1:
SelectElement=driver.find_element_by_name("site")
SelectElement.find_element_by_xpath("//option[@value='1']").click()
sleep(2)
driver.quit()

除了上面的定位方式,WebDriver还提供了Select模块来定位下拉框。

使用Select模块,需要先导入该模块。

from selenium.webdriver.support.select import Select

Select提供了三种选择方法来定位下拉框:

  • select_by_index(index):通过选项的顺序,第一个选项索引为 0;
  • select_by_value(value):通过value属性;
  • select_by_visible_text(text):通过选项可见文本。

通过select_by_index(index)方法来定位下拉框,代码如下:

from selenium import webdriver
from time import sleep
from selenium.webdriver.support.select import Select driver=webdriver.Firefox()
driver.get("file:///D:/Radio&Select&CheckBox.html") # ==================================
# ======借助Select模块来选择下拉框======
# ==================================
# Select方式1:借助Select索引来选择
SelectElement=Select(driver.find_element_by_name("site"))
SelectElement.select_by_index(1)
sleep(2)
driver.quit()

通过select_by_value(value)方法来定位下拉框,代码如下:

from selenium import webdriver
from time import sleep
from selenium.webdriver.support.select import Select
driver=webdriver.Firefox()
driver.get("file:///D:/Radio&Select&CheckBox.html") # ==================================
# ======借助Select模块来选择下拉框======
# ==================================
# Select方式2:借助Select value属性来选择
SelectElement=Select(driver.find_element_by_name("site"))
SelectElement.select_by_value("1")
sleep(2)
driver.quit()

通过select_by_visible_text (value)方法来定位下拉框,代码如下:

from selenium import webdriver
from time import sleep
from selenium.webdriver.support.select import Select driver=webdriver.Firefox()
driver.get("file:///D:/Radio&Select&CheckBox.html")
# ==================================
# ======借助Select模块来选择下拉框======
# ==================================
# Select方式3:借助Select text属性来选择
SelectElement=Select(driver.find_element_by_name("site"))
SelectElement. ("上海")
sleep(2)
driver.quit()

Select提供了四种方法取消选择:

  • deselect_by_index(index):取消对应index选项;
  • deselect_by_value(value):取消对应value选项;
  • deselect_by_visible_text(text): 取消对应文本选项;
  • deselect_all():取消所有选项。

Select提供了三个属性方法提供信息:

  • options:提供所有的选项的列表,其中都是选项的WebElement元素;
  • all_selected_options:提供所有被选中的选项的列表,其中也均为选项的WebElement元素;
  • first_selected_option:提供第一个被选中的选项,也是下拉框的默认值。

如果你觉的文章读的不过瘾,可以查看详细的视频教程。

【2021】UI自动化测试:Selenium3自动化测试

https://ke.qq.com/course/3172187?tuin=9c43f38e

【测试全系列视频课程】请点击我哦.....

《全栈测试系列视频》课程

地址:https://ke.qq.com/course/2525707?tuin=9c43f38e

图书京东、当当有售

京东:https://item.jd.com/12784287.html

当当:http://product.dangdang.com/29177828.html)!


同步视频知识与系列知识内容,可关注:【公众号】:柒哥测试;【WX】:Lee-890


Selenium3自动化测试【28】单选框、复选框、下拉选择框的更多相关文章

  1. layui下拉选择框select不显示

    弹层layer下拉框没有样式_不可点击_没有效果_渲染失效的解决办法 一.必须给表单体系所在的父元素加上 class="layui-form" 在一个容器中设定 class=&qu ...

  2. selenium的下拉选择框

    今天总结下selenium的下拉选择框.我们通常会遇到两种下拉框,一种使用的是html的标签select,另一种是使用input标签做的假下拉框. 后者我们通常的处理方式与其他的元素类似,点击或使用J ...

  3. selenium之 下拉选择框Select

    今天总结下selenium的下拉选择框.我们通常会遇到两种下拉框,一种使用的是html的标签select,另一种是使用input标签做的假下拉框. 后者我们通常的处理方式与其他的元素类似,点击或使用J ...

  4. 基于jQuery美化联动下拉选择框

    今天给大家介绍一款基于jQuery美化联动下拉选择框.这款下下拉选择框js里自带了全国所有城市的数数库.下拉选择框适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲 ...

  5. java、easyui-combotree树形下拉选择框

    最近一直在研究这个树形的下拉选择框,感觉非常的有用,现在整理下来供大家使用: 首先数据库的表架构设计和三级菜单联动的表结构是一样,(父子关系) 1.下面我们用hibernate建一下对应的额实体类: ...

  6. FancySelect – 更好用的 jQuery 下拉选择框插件

    FancySelect 这款插件是 Web 开发中下拉框功能的一个更好的选择.FancySelect 使用方便,只要绑定页面上的任何 Select 元素,并调用就 .fancySelect() 就可以 ...

  7. HTML、CSS小知识--兼容IE的下拉选择框select

    HTML <div class="s_h_ie"> <select id="Select1" disabled="disabled& ...

  8. Bootstrap系列 -- 15. 下拉选择框select

    Bootstrap框架中的下拉选择框使用和原始的一致,多行选择设置multiple属性的值为multiple.Bootstrap框架会为这些元素提供统一的样式风格 <form role=&quo ...

  9. CSS自定义select下拉选择框(不用其他标签模拟)

    今天群里有人问到怎么自定义select下拉选择框的样式,于是群里就展开了激烈的讨论,刚开始一直就是考虑怎样使用纯CSS实现,把浏览器默认的样式覆盖掉,但最后均因兼容问题处理不好而失败告终,最后的解决方 ...

  10. ul+jquery自定义下拉选择框

    <!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...

随机推荐

  1. linux鸟哥学习笔记

    Linux学习笔记 Linux档案权限和目录配置 目录如果没有x权限,则无法进入该目录 改变文件和属性 chgrp: 改变档案所属的群组 chown:改变档案的拥有者 chmod:改变档案的权限,SU ...

  2. 老徐和阿珍的故事:CAP是什么?超级爱放P吗?

    人物背景: 老徐,男,本名徐福贵,从事Java相关研发工作多年,职场老油条,摸鱼小能手,虽然岁数不大但长的比较着急,人称老徐.据说之前炒某币败光了所有家产,甚至现在还有欠债. 阿珍,女,本名陈家珍,刚 ...

  3. 搭建分布式事务组件 seata 的Server 端和Client 端详解(小白都能看懂)

    一,server 端的存储模式为:Server 端 存 储 模 式 (store-mode) 支 持 三 种 : file: ( 默 认 ) 单 机 模 式 , 全 局 事 务 会 话 信 息 内 存 ...

  4. Ubuntu16.04 搭建samba服务器

    1昨天花了一天时间弄了NFS服务器,结果搭建完之后出现各种问题,要么挂载不上,要么就是字符乱码.今天在看到一个关于树莓派的介绍的时候,提到Samba服务器的搭建,我尝试了一下,结果发现很顺利地就能够正 ...

  5. JDBC-连接Druid数据池

    •导入Druid-jar包 •下载地址 链接:https://pan.baidu.com/s/1A3tSCT9BDXkzB7zbukzyPg?pwd=0000 提取码:0000 下载后具体导入操作和这 ...

  6. 如何在 Spring Boot 中禁用 Actuator 端点安全性?

    默认情况下,所有敏感的 HTTP 端点都是安全的,只有具有 ACTUATOR 角色的用户才能访问它们.安全性是使用标准的 HttpServletRequest.isUserInRole 方法实施的. ...

  7. 什么是springboot?为什么要用springboot?

    一.什么是springboot? Springboot是spring发展到一定程度的产物,但并不是spring的替代品,springboot是为了让程序员更好的使用spring.Spring随着发展逐 ...

  8. XMLBeanFactory?

    最常用的就是 org.springframework.beans.factory.xml.XmlBeanFactory ,它根据XML文件中的定义加载beans.该容器从XML 文件读取配置元数据并用 ...

  9. Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法?

    1.64 GB 内存的机器是非常理想的, 但是 32 GB 和 16 GB 机器也是很常见的.少于 8 GB 会适得其反. 2.如果你要在更快的 CPUs 和更多的核心之间选择,选择更多的核心更好.多 ...

  10. Java 中的 HashSet,内部是如何工作的?

    HashSet 的内部采用 HashMap 来实现.由于 Map 需要 key 和 value,所以 所有 key 的都有一个默认 value.类似于 HashMap,HashSet 不允许重复的 k ...