下面将使用WebDriver来模拟操作定位一组对象的操作
测试用例场景
从上一节的例子中可以看出,webdriver可以很方便的使用find_element方法来定位某个特定的对象,不过有时候我们却需要定位一组对象,这时候就需要使用find_elements方法。
定位一组对象一般用于以下场景:
- 批量操作对象,比如将页面上所有的checkbox都勾上
- 先获取一组对象,再在这组对象中过滤出需要具体定位的一些对象。比如定位出页面上所有的checkbox,然后选择最后一个
Python脚本
示例用HTML代码:
<html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <title>Checkbox</title> <script type="text/javascript" async="" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" /> <script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script> </head> <body> <h3>checkbox</h3> <div class="well"> <form class="form-horizontal"> <div class="control-group"> <label class="control-label" for="c1">checkbox1</label> <div class="controls"> <input type="checkbox" id="c1" /> </div> </div> <div class="control-group"> <label class="control-label" for="c2">checkbox2</label> <div class="controls"> <input type="checkbox" id="c2" /> </div> </div> <div class="control-group"> <label class="control-label" for="c3">checkbox3</label> <div class="controls"> <input type="checkbox" id="c3" /> </div> </div> <div class="control-group"> <label class="control-label" for="r">radio</label> <div class="controls"> <input type="radio" id="r" /> </div> </div> </form> </div> </body> </html>
Python脚本:
# coding=gbk ''' Created on 2013年12月8日 @author: Administrator ''' from selenium import webdriver from time import sleep import os if 'HTTP_PROXY' in os.environ: del os.environ['HTTP_PROXY'] dr = webdriver.Firefox() file_path = 'file:///'+ os.path.abspath('locator.html') print file_path dr.get(file_path)#打开测试用HTML文件 checkboxes = dr.find_elements_by_css_selector('input[type=checkbox]')#定义页面的所有checkbox for checkbox in checkboxes: #遍历checkbox checkbox.click() sleep(5) print len(dr.find_elements_by_css_selector('input[type=checkbox]')) #打印出checkbox的数量 dr.find_element_by_css_selector('input[type=checkbox]').pop().click() #反勾选checkbox print 'close after 5s ' sleep(5) dr.quit()