1. 选择框

本章使用的html代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h3 style="color: brown">radio框</h3>
<div id="s_radio">
<input type="radio" name="radios" value="radio1">radio1<br>
<input type="radio" name="radios" value="radio2">radio2<br>
<input type="radio" name="radios" value="radio3" checked="checked">radio3
</div> <hr> <h3 style="color: brown">checkbox框</h3> <div id="s_checkbox">
<input type="checkbox" name="checkboxs" value="checkbox1">checkbox1<br>
<input type="checkbox" name="checkboxs" value="checkbox2">checkbox2<br>
<input type="checkbox" name="checkboxs" value="checkbox3" checked="checked">checkbox3
</div>
<hr> <h3 style="color: brown">select框</h3>
<h4 style="color: rgb(22, 118, 173)">单选</h4> <select id="ss_single">
<option value="option1">option1</option>
<option value="option2">option2</option>
<option value="option3" selected="selected">option3</option>
</select> <hr> <h4 style="color: rgb(22, 118, 173)">多选</h4>
<select id="ss_multi" multiple>
<option value="options1">options1</option>
<option value="options2">options2</option>
<option value="options3" selected="selected">options3</option>
</select>
</body>
</html>

1.1 radio框

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

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

先打印当前选中的值

再选择radio2

<div id="s_radio">
<input type="radio" name="radios" value="radio1">radio1<br>
<input type="radio" name="radios" value="radio2">radio2<br>
<input type="radio" name="radios" value="radio3" checked="checked">radio3
</div>

对应的代码如下:

from selenium import webdriver

wd = webdriver.Chrome(r'E:\webdrivers\chromedriver.exe')
wd.implicitly_wait(10) wd.get('http://127.0.0.1:8020/day01/index.html') # 获取当前选中的元素
element = wd.find_element_by_css_selector(
'#s_radio input[checked=checked]')
print('当前选中的是: ' + element.get_attribute('value')) # 点选radio2
wd.find_element_by_css_selector('#s_radio input[value="radio2"]').click()

1.2 checkbox框

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

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

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

<div id="s_checkbox">
<input type="checkbox" name="checkboxs" value="checkbox1">checkbox1<br>
<input type="checkbox" name="checkboxs" value="checkbox2">checkbox2<br>
<input type="checkbox" name="checkboxs" value="checkbox3" checked="checked">checkbox3
</div>

我们的思路可以是这样:

先把已经选中的选项全部点击一下,确保都是未选状态

再点击checkbox2

示例代码:

from selenium import webdriver

wd = webdriver.Chrome(r'E:\webdrivers\chromedriver.exe')
wd.implicitly_wait(10) wd.get('http://127.0.0.1:8020/day01/index.html') # 先把 已经选中的选项全部点击一下
elements = wd.find_elements_by_css_selector(
'#s_checkbox input[checked="checked"]') for element in elements:
element.click() # 再点击checkbox2
wd.find_element_by_css_selector("#s_checkbox input[value='checkbox2']").click()

1.3 select框

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

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

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

1.3.1 常用方法

Select类提供了如下的方法:

(1) select_by_value

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

比如,下面的HTML:

<option value="foo">Bar</option>

就可以根据 foo 这个值选择该选项:

s.select_by_value('foo')

(2) select_by_index

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

(3) select_by_visible_text

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

比如,下面的HTML:

<option value="foo">Bar</option>

就可以根据Bar这个内容,选择该选项:

s.select_by_visible_text('Bar')

(4) deselect_by_value

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

(5) deselect_by_index

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

(6) deselect_by_visible_text

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

(7) deselect_all

去除选中所有元素。

1.3.2 Select单选框

对于 select单选框,操作比较简单:

不管原来选的是什么,直接用Select方法选择即可。

例如,选择示例里面的option2,示例代码如下:

from selenium import webdriver

wd = webdriver.Chrome(r'E:\webdrivers\chromedriver.exe')
wd.implicitly_wait(10) wd.get('http://127.0.0.1:8020/day01/index.html') # 导入Select类
from selenium.webdriver.support.ui import Select # 创建Select对象
select = Select(wd.find_element_by_id("ss_single")) # 通过 Select 对象选中option2
select.select_by_visible_text("option2")

1.3.3 Select多选框

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

例如,我们选择示例多选框中的options2和options3。

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

然后再通过select_by_visible_text方法选择options2和options3。

示例代码如下:

from selenium import webdriver

wd = webdriver.Chrome(r'E:\webdrivers\chromedriver.exe')
wd.implicitly_wait(10) wd.get('http://127.0.0.1:8020/day01/index.html') # 导入Select类
from selenium.webdriver.support.ui import Select # 创建Select对象
select = Select(wd.find_element_by_id("ss_multi")) # 清除所有已经选中的选项
select.deselect_all() # 选择options2和options3
select.select_by_visible_text("options2")
select.select_by_visible_text("options3")

Selenium(七):选择框(radio框、checkbox框、select框)的更多相关文章

  1. js做全选,用一个checkbox复选框做多个checkbox复选框的全选按钮,有一个复选框未被选择时,全选按钮的checked就为false

    用一个checkbox复选框做多个checkbox复选框的全选按钮,有一个复选框未被选择时,全选按钮的checked就为false,当所有checkbox都被选中时,全选按钮也被选中. 详解: 有两种 ...

  2. 修改radio、checkbox、select默认样式的方法

    样式 radio select checkbox 兼容性 现在前端页面效果日益丰富,默认的input组件样式显然已经不能满足需求.趁着这次开发的页面中有这方面的需求,在这里整理一下修改radio.ch ...

  3. JS中Float类型加减乘除 修复 JQ 操作 radio、checkbox 、select LINQ to SQL:Where、Select/Distinct LINQ to SQL Count/Sum/Min/Max/Avg Join

    JS中Float类型加减乘除 修复   MXS&Vincene  ─╄OvЁ  &0000027─╄OvЁ  MXS&Vincene MXS&Vincene  ─╄Ov ...

  4. jquery实用应用之jquery操作radio、checkbox、select

    本文收集一些jquery的实用技巧,非常实用的哦,其中对radio.checkbox.select选中与取值的方法. 获取一组radio被选中项的值var item = $('input[@name= ...

  5. Jquery常用radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中,及其相关设置

    获取一组radio被选中项的值:var item = $('input[name=items][checked]').val(); 获取select被选中项的文本:var item = $(" ...

  6. jquery radio、 checkbox、 select 操作

    转载:http://www.haorooms.com/post/checkandselect $("input[id^='code']");//id属性以code开始的所有inpu ...

  7. Jquery常用操作:checkbox、select取值,radio、checkbox、select选中及其相关

    常用Jquery操作:checkbox取值.select取值.radio选中.checkbox选中.select选中及其相关: 1.影藏页面元素 使用jquery真的很方便,比如要控制div的显示与隐 ...

  8. radio,checkbox,select,input text获取值,设置哪个默认选中

    11 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title& ...

  9. [转]jQuery操作radio、checkbox、select 集合.

    1.radio:单选框 html代码 <input type="radio" name="radio" id="radio1" val ...

  10. jQuery操作radio、checkbox、select 集合

    1.radio:单选框 HTML代码: <input type="radio" name="radio" id="radio1" va ...

随机推荐

  1. 小白的springboot之路(九)、集成MongoDB

    0.前言 MongoDB是一个高性能.开源的文档型数据库,是当前nosql数据库中最热门的一种,在企业中广泛应用:虽然前段时间更改了开源协议导致被很多企业舍弃,但主要是对云服务商影响较大,对我们来说其 ...

  2. Python面向对象-@property装饰器

    python中,我们可以直接添加和修改属性的值: >>> class Student(object): ... pass ... >>> s = Student() ...

  3. 1.Python 简单输入输出

    1 读取:input() 1.1 简单打印内容 In [1]: input('你好,请输入你的名字:') 你好,请输入你的名字:小明 1.2 保存输入内容 In [2]: CN_Name = inpu ...

  4. 【高可用架构】开发机上部署Deploy项目(一)

    准备 部署项目的细节可以看这个,传送门Centos 7部署Laravel项目 主机IP:192.168.10.17 [高可用架构]系列链接:待部署的架构介绍 演示 部署Deploy composer ...

  5. docker 使用mysqldump命令备份导出项目中的mysql数据

    下图为镜像重命名后的镜像名为uoj,现在要把这个镜像中的mysql导出 运行如下命令: docker exec -it uoj mysqldump -uroot -proot app_uoj233 & ...

  6. react中报错Failed to set an indexed property on 'CSSStyleDeclaration': Index property setter is not supported

    产生这个报错的原因是我当时将样式写到了less文件,我在div中使用的使用应该是使用className = ,而我误写了一个style = .style里面当然没有自定义的className,所以产生 ...

  7. springboot使用hibernate validator

    前言 在开发中经常需要写一些字段校验的代码,比如字段非空,字段长度限制,邮箱格式验证等等,写这些与业务逻辑关系不大的代码个人感觉有两个麻烦: 验证代码繁琐,重复劳动 方法内代码显得冗长 每次要看哪些参 ...

  8. PHP服务化搭建之nginx动静分离实战

    如有什么问题可以加群交流:647617935 什么是动静分离 动静分离:将项目中的CSS,JS,HTML,JPG'.等静态资源和 PHP等动态资源分开处理的一种方式 动静分离优点 不同的文件由不同类型 ...

  9. RESTful 架构风格

    在移动互联网的大潮下,『微服务』的概念也越来越被大家接受并应用于实践,日益增多的web service逐渐统一于RESTful 架构风格,如果开发者对RESTful 架构风格不甚了解,则开发出的所谓R ...

  10. Socket的常用方法。

    构造方法: 1.使用构造方法 public ServerSocket(int port) 和public ServerSocket(int port,int backlog) 创建ServerSock ...