zoukankan      html  css  js  c++  java
  • web自动化01-自动化解决的问题-环境搭建-元素定位

    自动化测试
    • 概念:由程序代码代替人工完成验证系统功能的过程

    • 解决的问题:

      • 回归测试

      • 压力测试

      • 兼容性测试

      • 提高测试效率,提升产品质量

    • 自动化测试分类

      • web自动化测试

      • 移动自动化测试

      • 接口自动化测试

      • 单元测试

     

    • 可行性分析:什么样的web项目适合做自动化测试

      • 需求变动不频繁

      • 项目周期要长(通常半年以上)

      • 项目需要回归测试

     

    环境搭建:
    • python环境

    • selenium包安装

      • 在线安装:

        • pip install selenium 默认下载的最新版本

        • pip install selenium==“版本号”

      • 查看selenium信息

        • pip show selenium

        • pip list 查看python第三方包信息

      • 卸载

        • pip uninstall selenium

      • 离线安装步骤

        • 下载外部包

        • 拷贝解压好的离线包到.pythonLibsite-packages

        • 打开cmd,进入.pythonLibsite-packages目录

        • 执行python setup.py instal

    • 安装浏览器

    • 安装浏览器驱动

      

    入门案例

    #1.导包
    import time
    from selenium import webdriver
    #2.实例化浏览器驱动对象
    driver = webdriver.Chrome()
    # driver =webdriver.Firefox()
    
    #3.打开测试网址
    driver.get('测试地址')
    #4.业务操作
    time.sleep(3)
    #5.关闭浏览器
    driver.quit()
    View Code

     八大元素定位

    By.id  driver.find_element_by_id(id属性值)

    By.name  driver.find_element_by_name(name)

    By.class_name  driver.find_element_by_class_name(class其中一个属性值)

    By.tag_name  driver.find_element_by_tag_name("")

    超链接定位  

      driver.find_element_by_link_text(元素完整文本信息)
      driver.find_element_by_partial_link_text(元素局部文本信息)

    Xpath定位  driver.find_element_by_xpath(xpath的表达式)

       //*[@属性名='属性值']

    拓展:

    重点需要掌握的方法://*[text()="xxx"] 文本内容是xxx的元素
    定位到部分文本:断言用 find_element_by_xpath('//button/span[contains(text(), "指定文本内容")]').click()
    """ 注意:xxx这个参数是元素的全部文本信息 """ //*[contains(@attribute,'xxx')] 属性中含有xxx的元素 //*[starts-with(@attribute,'xxx')] 属性以xxx开头的元素

     CSS定位策略

      #id选择 表达式:#id属性值

    
    #class选择器  表达式:.class其中一个属性值
    
    #元素选择器  表达式:标签名
    
    #属性选择器 表达式:[属性名='属性值'] 标签名[属性名='属性值']
    #标签名[属性名='属性值'][属性名1='属性值1'] 
    #注意的:多个属性连接的时候中括号中间没有空格
    
    #层级选择
    #格式1:element1>element2 通过element1来定位element2,并且#element2必须为element1的直接子
    "#pa>input[name='userA']"
    #格式2:element1 element2 通过element1来定位element2,并且#element2为element1的后代元素
    "fieldset input[name='userA']"

    # 拓展

    input[type^='p'] type属性以p字母开头的元素
    input[type$='d'] type属性以d字母结束的元素
    input[type*='w'] type属性包含w字母的元素

     常见元素操作

    #鼠标右键点击事件
    element.click()
    #模拟输入:value表示输入的字符串信息
    element.send_keys(value)
    #清除信息
    element.clear()
    浏览器操作
    #窗口最大化(重点)
    driver.maximize_window()
    #设置窗口大小
    driver.set_window_size(width,height)
    #设置窗口位置
    driver.set_window_position(x,y)
    
    #关闭当前驱动页面
    driver.close()
    #关闭整个浏览器
    driver.quit()
    #获取当前页面标题
    driver.title
    #获取当前页面地址
    driver.current_url

     

    获取元素信息
    获取信息方法备注
    获取元素文本信息 element.text  
    获取元素大小 element.size  
    获取元素属性信息 element.get_attribute('元素属性值')  
    判断元素是否可见 element.is_displayed() span标签,权限
    判断元素是否可用 element.is_enabled() 例:购物车减少数量按钮
    判断元素是否选中 element.is_selected() 例:注册协议是否选中

     

     

     

     

  • 相关阅读:
    redis启动
    supervisor thinkphp6 qune
    iview table header cell tooltip; iview表格 表头、单元格文字提示 ;iview 表格 悬浮提示
    .net mvc 中引入 echarts dataTool prepareBoxplotData
    iview table 初始化为null问题
    sqlserver 视图 EF无法从数据更新模型
    sql 空格变问号;sql 无法 去掉 空格 ;sql rtrim 失效;(转载)
    MongoDB的备份与恢复(转载)
    jQuery的deferred对象详解(转载)
    今天,我们小公司的服务器被黑了!!!
  • 原文地址:https://www.cnblogs.com/snailon/p/11068674.html
Copyright © 2011-2022 走看看