python-selenium-定位一组对象

定位一组对象一般用于以下场景:

  • 批量操作对象,比如将页面上所有的checkbox都勾上
  • 先获取一组对象,再在这组对象中过滤出需要具体定位的一些对象。比如定位出页面上所有的checkbox,然后选择最后一个

checkbox.html

 1 <html>
 2 <head>
 3 <meta http-equiv="content-type" content="text/html;charset=utf-8" />
 4 <title>Checkbox</title>
 5 <script type="text/javascript" async=""
 6 src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
 7 <link
 8 href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined
 9 .min.css" rel="stylesheet" />
10 <script
11 src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></
12 script>
13 </head>
14 <body>
15 <h3>checkbox</h3>
16 <div class="well">
17 <form class="form-horizontal">
18 <div class="control-group">
19 <label class="control-label" for="c1">checkbox1</label>
20 <div class="controls">
21 <input type="checkbox" id="c1" />
22 </div>
23 </div>
24 <div class="control-group">
25
26 <label class="control-label" for="c2">checkbox2</label>
27 <div class="controls">
28 <input type="checkbox" id="c2" />
29 </div>
30 </div>
31 <div class="control-group">
32 <label class="control-label" for="c3">checkbox3</label>
33 <div class="controls">
34 <input type="checkbox" id="c3" />
35 </div>
36 </div>
37 <div class="control-group">
38 <label class="control-label" for="r">radio</label>
39 <div class="controls">
40 <input type="radio" id="r1" />
41 </div>
42 </div>
43 <div class="control-group">
44 <label class="control-label" for="r">radio</label>
45 <div class="controls">
46 <input type="radio" id="r2" />
47 </div>
48 </div>
49 </form>
50 </div>
51 </body>
52 </html>

checkbox_test.py

#conding = utf-8
from selenium import webdriver
import os
class checktest():

def __init__ (self):

    self.driver = webdriver.Chrome()
    file_path = ‘file:///‘ + os.path.abspath(‘checkbox.html‘)
    self.driver.get(file_path)
    self.driver.maximize_window()

def checkboxs (self):
    #定义一个勾选多选框方法
    self.driver.implicitly_wait(30)
    #定位一组type为checkox的标签,遍历。遍历出来的一一勾选
    checkboxes = self.driver.find_elements_by_css_selector(‘input[type=checkbox]‘)
    for checkbox in checkboxes:
        checkbox.click()

def check_1 (self):
    self.driver.implicitly_wait(50)
    #定位定位一组input标签,遍历出来。使用get_attribute()方法获取对象属性,当属性为checkbox时勾选
    inputs = self.driver.find_elements_by_tag_name(‘input‘)
    for inputes in inputs:
        if inputes.get_attribute(‘type‘) == ‘checkbox‘:
            inputes.click()
def check_2 (self):
    #调用勾选方法
    self.checkboxs()

def check_3 (self):
    #调用勾选方法
    self.checkboxs()
    #打印定位到type为checkbox的元素个数
    print(len(self.driver.find_elements_by_css_selector(‘input[type=checkbox]‘)))
    #使用pop()方法去掉最后一个勾选
    self.driver.find_elements_by_css_selector(‘input[type=checkbox]‘).pop().click()
def quit (self):
    self.driver.quit()

将两段代码保存为相应的文件,并且在同一目录下

------------------------------------------------------------------------------------------------------------------------------------

更多内容可查看乙醇的小册子

https://easonhan007.gitbooks.io/selenium-webdriver/content/

时间: 2024-10-23 07:42:25

python-selenium-定位一组对象的相关文章

selenium python (六)定位一组对象

checkbox源码: <html><head><meta http-equiv="content-type" content="text/html;charset=utf-8" /><title>Checkbox</title><script type="text/javascript" async="" src="https://ajax.goog

selenium python 定位一组对象

为什么定位一组对象? 定位一组对象的思想 在定位一组对象的过程中我们如何实现?以前的都是通过具体的对象定位,那么定位一组我们就需要通过css来定位   在单个定位对象中使用的是find_element_by_id()  但是定位一组对象需要使用find_elements_by_css_selector eg: #定位所有的checkbox对象 checkboxs = dr.find_elements_by_css_selector('input[type=checkbox]') for chec

【Python】定位一组元素、

前几天生病加懒惰 TAT ========================================================================== 1.getAttribute()方法是一个函数.它只有一个参数--你打算查询的属性的名字: 2.http://www.cnblogs.com/fnng/p/3190966.html 注意路径 3. [Python]定位一组元素.,布布扣,bubuko.com

4. 定位一组对象

如果需要定位一组对象,需要使用以下方法,会返回一个list find_elements_by_name find_elements_by_xpath find_elements_by_link_text find_elements_by_partial_link_text find_elements_by_tag_name find_elements_by_class_name find_elements_by_css_selector element = driver.find_element

Selenium 定位一组元素

到目前为止,我们已经知道了怎么去定位一个元素,有时候我们需要获取页面上的多个元素,该怎么办呢?难道还一个一个地去定位,那也太lower了吧. webdriver提供了定位一组元素的方法,跟前面讲的那八种定位方法一样,只不过定位一个元素是单数:find_element,定位一组元素是复数:find_elements 我们以百度搜索结果页面为例. 在百度搜索框输入"selenium",点击"百度一下"按钮,查看页面元素 从搜索结果的页面html代码可以看到,每条搜索结果

【selenium学习笔记一】python + selenium定位页面元素的办法。

1.什么是Selenium,为什么web测试,大家都用它? Selenium设计初衷就是为web项目的验收测试再开发.内核使用的是javaScript语言编写,几乎支持所以能运行javaScript的浏览器,支持windows\linux\macos等各种平台. Selenium 脚本是用多种受支持的编程语言中的一种编写的 —— 目前可用的有 Java.Ruby 和 Python 驱动程序.这些脚本在浏览器之外的一个单独的进程中运行.驱动程序的任务是执行测试脚本,并通过与运行在浏览器中的 bro

定位一组对象find_elements

1.脚本准备 1)将以下代码保存复制到记事本中,并保存成 checkbox.html 文件. (注意,这个页面需要和我们的自动化脚本放在同一个目录下,否则下面的脚本将指定 checkbox.html 的所在目录) 1 <html> 2 <head> 3 <meta http-equiv="content-type" content="text/html;charset=utf-8" /> 4 <title>Checkb

python+selenium 定位元素

一.安装python1.配置环境变量c:\python27:C:\Python27\Scripts2.验证pyton是否可用,在cmd里面输入python没报错就行 二.安装selenium库4.安装selenium:在cmd里面,输入:pip install selenium 三.对应于webdriver中的定位方法分别是: driver.find_element_by_name()--最常用,简单 driver.find_element_by_id()--最常用,简单 driver.find

python + selenium定位页面元素的办法

1.什么是Selenium,为什么web测试,大家都用它? Selenium设计初衷就是为web项目的验收测试再开发.内核使用的是javaScript语言编写,几乎支持所以能运行javaScript的浏览器,支持windows\linux\macos等各种平台. Selenium 脚本是用多种受支持的编程语言中的一种编写的 -- 目前可用的有 Java.Ruby 和 Python 驱动程序.这些脚本在浏览器之外的一个单独的进程中运行.驱动程序的任务是执行测试脚本,并通过与运行在浏览器中的 bro

Python+Selenium定位不到元素常见原因及解决办法

在做web应用的自动化测试时,定位元素是必不可少的,这个过程经常会碰到定位不到元素的情况(报selenium.common.exceptions.NoSuchElementException),一般可以从以下几个方面着手解决: 1.Frame/Iframe原因定位不到元素: 这个是最常见的原因,首先要理解下frame的实质,frame中实际上是嵌入了另一个页面,而webdriver每次只能在一个页面识别,因此需要先定位到相应的frame,对那个页面里的元素进行定位. 解决方案:如果iframe有