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. 聊一聊 Vue 中 watch 对象中的回调函数为什么不能是箭头函数?

    聊一聊 Vue 中 watch 对象中的回调函数为什么不能是箭头函数 本文重点知识点速览: Vue 中的 watch 对象中的回调函数不能是箭头函数. 箭头函数中的 this 指向的是函数定义时所在的 ...

  2. Python代码编写规范,你真的会吗?

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:yangjiajia123456  最近两年的工作都是和运维相关,有时 ...

  3. Python基础-day01-3

    PyCharm 的初始设置(知道) 目标 恢复 PyCharm 的初始设置 第一次启动 PyCharm 新建一个 Python 项目 设置 PyCharm 的字体显示 PyCharm 的升级以及其他 ...

  4. 从AlexNet(2012)开始

    目录 写在前面 网络结构 创新点 其他有意思的点 参考 博客:blog.shinelee.me | 博客园 | CSDN 写在前面 本文重点在于回顾深度神经网络在CV领域的First Blood--A ...

  5. (译)An introduction to Kubernetes

    原文:https://www.jeremyjordan.me/kubernetes/(博客园团队推荐的) 这篇博客文章将对Kubernetes进行介绍,以便您了解该工具背后的动机,含义以及使用方式.在 ...

  6. Nginx:基本概念

    守住一方平安,尽力而为,问心无愧就好.     Nginx同Apache一样都是一种WEB服务器,Nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3 ...

  7. c++11多线程笔记

    1 thread类thread f;线程等待join()线程分离detach() thread类不可拷贝复制 std::this_thread::yield(); 2 bind 与lambda表达式 ...

  8. 用Python在25行以下代码实现人脸识别

    在本文中,我们将看到一种使用Python和开放源码库开始人脸识别的非常简单的方法. OpenCV OpenCV是最流行的计算机视觉库.最初是用C/C++编写的,现在它提供了Python的API. Op ...

  9. eclipse中js中文乱码问题的解决办法

    在Eclipse中编辑JS文件简直是一种折磨,但是却总是很无奈得要去适应. 这里说一下Eclipse中,编辑JS文件时候,出现中文乱码问题的解决办法. 这个问题很容易想到是文件编码的问题,因此通常是修 ...

  10. Windows10安装Elasticsearch IK分词插件

    安装插件 cmd切换到Elasticsearch安装目录下 C:\Users\Administrator>D: D:\>cd D:\Program Files\Elastic\Elasti ...