Python脚本控制的WebDriver 常用操作 <九> 定位一组对象

下面将使用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()

 

 

你可能感兴趣的:(webdriver)