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. git 知识,适合新手 滤清思路

    1,密钥 (公钥和私钥) @ 公钥放在服务器上(说白了这里的服务器就是远程仓库, 就是谁建立的远程仓库这个公钥就放在他的ssh设置那) @ 私钥 放在本地就行,不用动,就是你生产密钥的.ssh 文件里 ...

  2. 从《彩色圆环》一题探讨一类环上dp的解法

    清橙A1202 bzoj2201 bsoj4074 试题来源 2010中国国家集训队命题答辩 问题描述 小A喜欢收集宝物.一天他得到了一个圆环,圆环上有N颗彩色宝石,闪闪发光.小A很爱惜这个圆环,天天 ...

  3. 黑苹果 macOS 10.13.6 17G66 安装 nVidia WebDriver

    目前很多N卡的WebDriver已经不支持macOS 10.14了,只能停留在10.13.6,苹果AppStore下载的 macOS High Sierra 10.13.6 版本号是17G66,遗憾的 ...

  4. opencv检测图像直线

    #include<opencv2/opencv.hpp> #include<iostream> using namespace std; using namespace cv; ...

  5. JavaScript实例:运动的小球

    本篇博文通过制作一个小球运动动画的实例,来学习在HTML5的画布上实现动画制作的方法,同时理解面向对象程序设计的基本思想. 1.绘制小球 先在HTML页面中设置一个画布. <canvas id= ...

  6. Redux学习及应用

    Redux学习及应用 一:Redux的来源? Redux 是 JavaScript 状态容器,提供可预测化的状态管理.Redux是由 Flux 演变而来,但受 Elm 的启发,避开了 Flux 的复杂 ...

  7. 关于c# winform 键盘响应右边键盘消息响应事件的上下左右方向键没有反应

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11835642.html 记录一下这个小坑,c# winform 键盘响应右边键盘的上下左右方向 ...

  8. PlayJava Day027

    进程状态 1.创建状态:在程序中用构造方法创建了一个线程对象后,新的线程对象便处于新建状态 此时,它已经有了相应的内存空间和其他资源,但还处于不可运行状态 新建一个线程对象可采用Thread类的构造方 ...

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

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

  10. JavaScript 递归遍历json串获取相关数据

    递归遍历json串获取相关数据   by:授客 QQ:1033553122 1.   测试数据 // 导航菜单 [ { id: 1, parentId: 0, parentName: null, na ...