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. 如何解决两个span标签之间的缝隙

    1.span直接一行 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> ...

  2. ReadWriteLock场景应用解析

    本人免费整理了Java高级资料,涵盖了Java.Redis.MongoDB.MySQL.Zookeeper.Spring Cloud.Dubbo高并发分布式等教程,一共30G,需要自己领取.传送门:h ...

  3. 高版本Visual Studio和低版本ArcGIS共存 工具箱没有控件的解决方法

    转载请声明.博客园/B站/CSDN/知乎/小专栏 @秋意正寒 欢迎访问小专栏,更多WebGIS开发(Cesium等)经验分享:https://xiaozhuanlan.com/gishome 众所周知 ...

  4. Gradle-构建脚本

    构建语言 Gradle提供了一种领域特定语言,目前同时支持 Groovy 和 Kotlin . 在 Groovy 构建脚本中(.gradle) 你可以使用任何 Groovy 元素. 在 Kotlin ...

  5. imageRectForContentRect,titleRectForContentRect,contentRectForBounds,imageRectForContentRect什么时候调用

    UIButton的布局顺序细节 什么时候调用imageRectForContentRect,titleRectForContentRect,contentRectForBounds,imageRect ...

  6. Elasticsearch7.5.0源码编译

    环境及工具 JDK12 Gradle5.6.2 GIT 源码及预处理 到github将代码clone下来,可以根据自己的需求来获取版本,例如 git checkout v7.5.0 提前下载gradl ...

  7. CompareAndSwap原子操作原理

    在翻阅AQS(AbstractQueuedSynchronizer)类的过程中,发现其进行原子操作的时候采用的是CAS.涉及的代码如下: 1: private static final Unsafe ...

  8. TDD的简单实践

    前言 最近有幸跟随资深ThoughtWorks咨询师熊节老师一起学习测试驱动设计,经过短暂的十几天培训,对测试驱动设计的基本原则.实践模式.技巧有了一点点初步的认识. 在此之前,经常自嘲我经历的公司实 ...

  9. 从零开始的vue学习笔记(六)

    混入 混入 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能.简单解释就是把一个Vue组件中的内容提供给别的组件来用.例子: // 定义一个混入对象 var myMixin ...

  10. Linux - CentOS 7 安装 .Net Core 运行环境

    阿里云的CentOS 7.7 64位,所需要的环境:MySql 5.7,.Net Core 2.2 ,Nginx 我这里用的 Xshell 工具,首先用root进入系统 版本信息 打开终端输入命令: ...