• python+selenium—webdriver入门(二)


    本文中主要介绍webdriver常见的对象定位方法

    一、对象定位的目的

    二、常见的对象定位方法


    一、对象定位的目的:

    1、操作对象

    2、获得对象的属性,如:对象的class属性、name属性等

    3、获得对象的text

    4、获取对象的数量

    二、常见的对象定位方法:

    1、find element方法:

      1、id

      2、name

      3、class name

      4、tag name

      5、css定位

      6、xpath定位

      7、link text

      8、partial link text

     1 # !/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 from selenium import webdriver
     4 import time
     5 
     6 __author__ = "No.1 优测"
     7 
     8 # webdriver 定位元素的八种常用方法
     9 
    10  
    11 
    12 browser = webdriver.Firefox()
    13 url = "http://cn.bing.com/"
    14 browser.get(url)
    15 time.sleep(3)
    16 
    17 # 1/find element by name
    18 browser.find_element_by_name("q").send_keys("python")
    19 time.sleep(2)
    20 browser.find_element_by_id("sb_form_go").click()
    21 time.sleep(2)
    22 browser.back()
    23 time.sleep(2)
    24 # 2/find element by id
    25 browser.find_element_by_id("sb_form_q").send_keys("python")
    26 time.sleep(2)
    27 browser.find_element_by_id("sb_form_go").click()
    28 time.sleep(2)
    29 browser.back()
    30 time.sleep(2)
    31 
    32 # 3/find element by class name
    33 browser.find_element_by_class_name("b_searchbox").send_keys("python")
    34 time.sleep(2)
    35 browser.find_element_by_id("sb_form_go").click()
    36 time.sleep(2)
    37 browser.back()
    38 time.sleep(2)
    39 
    40 # 4/find element by tag name
    41 browser.find_element_by_tag_name("input").send_keys("python")
    42 time.sleep(2)
    43 browser.find_element_by_id("sb_form_go").click()
    44 time.sleep(2)
    45 browser.back()
    46 time.sleep(2)
    47 
    48 # 5/find element by css
    49 browser.find_element_by_css_selector("input[title="输入搜索词"]").send_keys("python")
    50 time.sleep(2)
    51 browser.find_element_by_id("sb_form_go").click()
    52 time.sleep(2)
    53 browser.back()
    54 time.sleep(2)
    55 
    56 # 6/find element by xpath
    57 browser.find_element_by_xpath("//input[@id = 'sb_form_q']").send_keys("selennium")
    58 time.sleep(2)
    59 browser.find_element_by_id("sb_form_go").click()
    60 time.sleep(2)
    61 browser.back()
    62 time.sleep(2)
    63 
    64 # 7/find element by link text
    65 browser.find_element_by_link_text("词典").click()
    66 time.sleep(2)
    67 browser.find_element_by_id("sb_form_go").click()
    68 time.sleep(2)
    69 browser.back()
    70 time.sleep(5)
    71 
    72 # 8/find element by partial link text
    73 browser.find_element_by_partial_link_text("").click()
    74 time.sleep(2)
    75 browser.back()
    76 time.sleep(2)
    77 
    78 browser.find_element_by_id("sb_form_go").click()
    79 time.sleep(2)
    80 browser.find_element_by_id("sb_form_go").click()
    81 time.sleep(2)
    82 browser.back()
    83 time.sleep(2)
    84 browser.quit()

    2、find elements方法:

    适用情况:1、批量处理元素;2、批量获取页面元素,过滤部分元素进行定位;

    准备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="" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
     6         <link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" />
     7         <script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
     8     </head>
     9     <body>
    10         <h3>checkbox</h3>
    11         <div class="well">
    12             <form class="form-horizontal">
    13                 <div class="control-group">
    14                     <label class="control-label" for="c1">checkbox1</label>
    15                     <div class="controls">
    16                         <input type="checkbox" id="c1" />
    17                     </div>
    18                 </div>
    19                 <div class="control-group">
    20                     <label class="control-label" for="c2">checkbox2</label>
    21                     <div class="controls">
    22                         <input type="checkbox" id="c2" />
    23                     </div>
    24                 </div>
    25                 <div class="control-group">
    26                     <label class="control-label" for="c3">checkbox3</label>
    27                     <div class="controls">
    28                         <input type="checkbox" id="c3" />
    29                     </div>
    30                 </div>    
    31         
    32                 <div class="control-group">
    33                     <label class="control-label" for="r">radio</label>
    34                     <div class="controls">
    35                         <input type="radio" id="r1" />
    36                     </div>
    37                 </div>
    38                 
    39                 <div class="control-group">
    40                     <label class="control-label" for="r">radio</label>
    41                     <div class="controls">
    42                         <input type="radio" id="r2" />
    43                     </div>
    44                 </div>
    45             </form>
    46         </div>
    47     </body>
    48 </html>
    View Code
     1 #!/usr/bin/env python
     2 #-*- coding:utf-8 -*- 
     4 
     5 import selenium
     6 from selenium import  webdriver
     7 import time
     8 import os
    9 # 使用绝对路径用normpath方法,使用相对路径用abspath方法 10 url = "file:///"+os.path.normpath("C:UsersAdministratorDesktopcheckbox.html") 11 browser = webdriver.Firefox() 12 browser.get(url) 13 checkboxs = browser.find_elements_by_css_selector("input[type = checkbox]") 14 for checkbox in checkboxs: 15 checkbox.click() 16 time.sleep(2) 17 #取消最后一个按钮选择 18 browser.find_elements_by_css_selector("input[type = checkbox]").pop().click() 19 time.sleep(2) 20 browser.quit()

    此文参考http://www.cnblogs.com/fnng/p/3190966.html

  • 相关阅读:
    Oracle通过Rman的"copy datafile"转移数据文件后不要使用sqlplus来重命名文件位置和文件名
    Oracle使用errorstack跟踪客户端的ORA报错
    Oracle OEM 13C表空间报警延迟问题
    CH5 用神经网络解决线性问题
    CH4 简化神经网络模型
    CH3 初识 TensorFlow
    Python 语言和 TensorFlow 框架环境准备
    创建型模式之单例模式与工厂模式(一)
    Node.js Koa框架学习笔记
    国庆七天假 不如来学学Vue-Router
  • 原文地址:https://www.cnblogs.com/anthony-wsw/p/6275606.html
Copyright © 2020-2023  润新知