zoukankan      html  css  js  c++  java
  • 一篇文章搞定Selenium元素定位/封装/数据驱动

    小伙伴都知道,自动化最重的,又最“难”(因为实战中会碰到定位的各种坑)那就是定位元素。如果不熟练掌握定位,那只怕你比功能测式的小伙伴下班还会要晚!扎心了吧!


    Selenium常用定位方式

      我们在做WEB自动化时,最根本的就是操作页面上的元素,首先我们要能找到这些元素,然后才能操作这些元素。工具或代码无法像我们测试人员一样用肉眼来分辨页面上的元素。那么我们怎么来定位他们呢?

    来坑了!经常有开发人员,没有写元素的id,或者name,你要打开发吗?哈哈,请一定熟练掌握xpath定位或css定位!!!否则你自动化寸步难行!!

     


     

    Selenium之iframe定位

      在 web 应用中经常会出现 iframe 嵌套的应用,假设网站是一栋房子,那么iframe则是房子中的某一个房间,如果你要从房间里拿到东西,那么必须要新进入房间,才能拿到相应的内容。 selenium提供了switch_to.frame()的方法来进入iframe这个房间 selenium提供switch_to_default_content()的方法来退出iframe这个房间 以163邮箱的网站为例,要求:输入用户名和密码,点击登录 网址:https://mail.163.com/

     重点:在iframe操作完,一定要释放该元素。(简单理解就是说,我要从这个房间出去后才能去其它地方)


    Selenium之列表定位

    下拉列表常见的前端表现形式:Select+Option 和 ul+li

     

    案例1:12306订票,url:https://kyfw.12306.cn/otn/leftTicket/init?linktypeid=dc

    操作流程:打开网址--出发地输入北京--》到达地输入上海--》发车时间选择12:00-18:00这个时间段--》点击查询

    解题思路: 导包:from selenium.webdriver.support.ui import Select 定位Select元素 再通过调用Select的方法来进行定位元素

    简单演式:

    源代码:

     


    定位非<select>标签的下拉菜单中的选项,需要两个步骤,先定位到下拉菜单,再对其中的选项进行定位。

    案例2:禅道编写用例,url:http://127.0.0.1/index.php

    解题思路:

    先定位到ul,并且将定位到的值赋给变量a a=driver.find_element_by_id("ul的id")

    再用变量a去找到li a.find_element_by_id("li的id").click()


    Selenium元素封装+数据驱动

    案例3:对于百度搜索,如何做元素的封装

    解题思路:

    导包:

    from selenium.webdriver.common.by import By

    使用find_element()方法来定位元素

    使用函数的方式来封装

    有没有局限性?

    案例4:对于百度搜索,元素封装后如何做数据驱动

    解题思路:

    unittest:单元测试框架,继承TestCase,重复使用,生成报告

    ddt:数据驱动,封装好后,只需填入数据即可完成测试任务


       如果对软件测试、接口测试、自动化测试、性能测试、持结集成、面试经验交流。感兴趣可以902061117,群内会有不定期的发放免费的资料链接,这些资料都是从各个技术网站搜集、整理出来的,如果你有好的学习资料可以私聊发我,我会注明出处之后分享给大家。

  • 相关阅读:
    关于伸缩盒子的使用问题
    html5前端框架
    ES6 promise对象
    Node和Electron开发入门(四):操作PC端文件系统
    兄弟组件的传值
    端口冲突解决办法
    查看mysql状态的常用命令
    使用mysqldump导入导出MySQL数据库
    Yii CModel中rules验证规则
    URL中#号的含义
  • 原文地址:https://www.cnblogs.com/zzpython/p/13214078.html
Copyright © 2011-2022 走看看