Python+selenium(定位一组元素)
我们熟知Webdriver有8种定位元素的方法,但是当需要定位一组元素的时候,可以使用Webdriver提供的与之对应的8种用于定位一组元素的方法,分别是:
- find_elements_by_id()
- find_elements_by_name()
- find_elements_by_class_name()
- find_elements_by_tag_name()
- find_elements_by_link_text()
- find_elements_by_partial_link_text()
- find_elements_by_xpath()
- find_elements_by_link_css_selector()
常见的定位一组元素一般用于以下场景:
- 批量操作元素,例如勾选页面上所有的复选框。
- 先获取一组元素,再从这组对象中过滤出需要操作的元素。例如定位页面上所有的checkbox,然后选择其中的一个进行操作。
手动创建一个checkbox.html页面:
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<title>Checkbox</title>
<link href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet"/>
<script src="http://cdn.bootcss.com/bootstrap/3.3.3.0/css/bootstrap.min.js"></script>
</head>
<body>
<h3>checkbox</h3>
<div class="well">
<form class="form-horizontal">
<div class="control-group">
<label class="control-lable" for="c1">checkbox1</label>
<div class="controls">
<input type="checkbox" id="c1" />
</div>
</div>
<div class="control-group">
<label class="control-lable" for="c2">checkbox2</label>
<div class="controls">
<input type="checkbox" id="c2" />
</div>
</div>
<div class="control-group">
<label class="control-lable" for="c3">checkbox3</label>
<div class="controls">
<input type="checkbox" id="c3" />
</div>
</div>
</form>
</div>
</body>
</html>
浏览器打开如下:

Python代码:
from selenium import webdriver
import time driver = webdriver.Firefox()
file_path = r'E:\python_script\Webdriver\checkbox.html'
driver.get(file_path) # 选择页面上所有tag name为input的元素
inputs = driver.find_elements_by_tag_name('input') # 然后从中过滤出type为checkbox的元素,单击勾选
for i in inputs:
if i.get_attribute('type') == 'checkbox':
i.click()
time.sleep(1) driver.quit()
如果只想要选择所有复选框中的一个,那么可以:
driver.find_elements_by_tag_name('input')[1].click()
除此之外,还可以使用XP啊退货或CSS来直接判断属性值,从而进行单击操作
# 使用xpath找到type=checkbox的元素
chekboxes = driver.find_elements_by_xpath("//input[@type='checkbox']") # 通过CSS找到type=checkbox的元素
checkboxes = driver.find_elements_by_css_selector('input[type=checkbox]')
选择之后,想要取消某一个复选框的操作:
# 把页面第二个checkbox的勾给去掉
driver.find_elements_by_css_selector('input[type=checkbox]').pop(1).click()
pop()方法用于获取列表中的一个元素(默认为最后一个元素)
- pop()或pop(-1):默认获取一组元素的最后一个
- pop(0): 默认获取一组元素中的第一个
- pop(1): 默认获取一组元素中的第二个
- ......
Python+selenium(定位一组元素)的更多相关文章
- Python+selenium定位一组元素,复选框
- Selenium 定位一组元素
到目前为止,我们已经知道了怎么去定位一个元素,有时候我们需要获取页面上的多个元素,该怎么办呢?难道还一个一个地去定位,那也太lower了吧. webdriver提供了定位一组元素的方法,跟前面讲的那八 ...
- python+selenium 定位隐藏元素
定位隐藏要素的原理:页面主要通过“display:none”来控制元素不可见.所以我们需要通过javaScript修改display的值得值为display="block,来实现元素定位的. ...
- 【selenium学习笔记一】python + selenium定位页面元素的办法。
1.什么是Selenium,为什么web测试,大家都用它? Selenium设计初衷就是为web项目的验收测试再开发.内核使用的是javaScript语言编写,几乎支持所以能运行javaScript的 ...
- python + selenium定位页面元素的办法
1.什么是Selenium,为什么web测试,大家都用它? Selenium设计初衷就是为web项目的验收测试再开发.内核使用的是javaScript语言编写,几乎支持所以能运行javaScript的 ...
- python selenium2 定位一组元素find_elements实例
打开hao123首页,需要定位以上区域中的所有链接,他们有相同的父元素<ul class="js_bd site-bd site-hd0">,所有链接处在li>a ...
- Python+Selenium自动化-定位一组元素,单选框、复选框的选中方法
Python+Selenium自动化-定位一组元素,单选框.复选框的选中方法 之前学习了8种定位单个元素的方法,同时webdriver还提供了8种定位一组元素的方法.唯一区别就是在单词elemen ...
- Selenium 2自动化测试实战14(定位一组元素)
一.定位一组元素 WebDriver还提供了与前面所对应的8钟用于定位一组元素的方法.定位一组元素的方法与定位单个元素的方法类似,唯一的区别是在单词element后面多了一个S表示复数.定位一组元素一 ...
- Selenium 定位网页元素
第一 定位元素辅助工具 IE中在元素上右击 -> “检查元素”,或按F12键打开开发者工具: Chrome中在元素上右击 -> “审查元素”,或按F12键打开开发者工具: Firefox ...
随机推荐
- 当不知道基本数据类型的取值范围时,可以通过max_value等来查询
public class Demo03{ public static void main(String[] args){ System.out.println("int MAX " ...
- win10下JDK安装,配置环境变量后报Error: could not open `C:\Program Files\Java\jre1.8.0_112\lib\amd64\jvm.cfg'
把Path里面的%JAVA_HOME%/bin放在最前面.
- jmeter(二十二)jmeter测试Java请求
目的:对Java程序进行测试 目录 一.核心步骤 二.实例 三.JMeter Java Sampler介绍 四.自带Java Request Sampler 一.核心步骤 1.创建一个Java工程: ...
- mvc不登录的情况下无法跳转至其他页面--解决方法之一
在每个控制器里,加以下方法 /// <summary> /// 在调用视图之前拦截非法用户 /// </summary> /// <param name="fi ...
- 2018微软实习笔试一道dp题目总结
题意大概是说在一维数轴上起点和终点的距离是d,现在我们要从起点走到终点.每走一个单位长度消耗一个单位能量,初始时有K单位能量.同时在起点和终点之间分布一些加油站a1,a2,...an,给你加油站数量. ...
- [BZOJ3527][ZJOI2014]力 FFT+数学
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3527 首先卷积的形式是$h(i)=\sum_{i=0}^jf(i)g(i-j)$,如果我们 ...
- 初学web前端,掌握这些就足够了!
Web开发如今是如日中天,热的发烫.那我们应该怎么学习呢?这不光是初学者,很多学了几年的人也会有些迷茫或者彷徨,大家也都知道不断学习是不可避免的,不学习肯定要掉队:那怎么学效率更高,那些是坑,那些是路 ...
- pandas DataFrame 警告(SettingWithCopyWarning)
转自:https://www.cnblogs.com/pig-fly/p/7875472.html 刚接触python不久,编程也是三脚猫,所以对常用的这几个工具还没有一个好的使用习惯,毕竟程序语言是 ...
- IOS访问webserver接口
接口调用参数只能是字符串格式,返回格式支持3种(字符串,数组,DataSet) 需要引用第三方库,包含(DataSet,PlatServinceDataParser,WebserviceCommon, ...
- How to proxy a web site by apache2 in Ubuntu
Install apache2 To execute the install command in terminal: sudo apt-get install apache2 Then, we ca ...