因为webdriver的api方法很长,再加上大多数的定位方式是以xpath方式定位,更加让代码看起来超级长,为了使整体的代码看起来整洁,对webdriver进行封装,学习资料来源于虫师的《selenium +  python自动化测试》一书。

在与测试用例文件夹同一目录下新建一个文件夹package,用来放置封装方法的模块文件

我们将webdriver二次封装的文件命名为location.py

from selenium import webdriver
from test_case.public import login #login文件中的driver传入 #定位一个元素
def findId(driver,Id):
f = driver.find_element_by_id(Id)
return f def findName(driver,Name):
f = driver.find_element_by_name(Name)
return f def findClassName(driver,ClassName):
f = driver.find_element_by_class_name(ClassName)
return f def findTagName(driver,TagName):
f = driver.find_element_by_tag_name(TagName)
return f def findCss(driver,Css):
f = driver.find_element_by_css_selector(Css)
return f def findLinkText(driver,LinkText):
f = driver.find_element_by_link_text(LinkText)
return f def findPLinkText(driver,PLinkText):
f = driver.find_element_by_partial_Link_text(PLinkText)
return f def findxPath(driver,xPath):
f = driver.find_element_by_xpath(xPath)
return f #定位一组元素 def findsId(driver,Id):
f = driver.find_elements_by_id(Id)
return f def findsName(driver,Name):
f = driver.find_elements_by_name(Name)
return f def findsClassName(driver,ClassName):
f = driver.find_elements_by_class_name(ClassName)
return f def findsTagName(driver,TagName):
f = driver.find_elements_by_tag_name(TagName)
return f def findsCss(driver,Css):
f = driver.find_elements_by_css_selector(Css)
return f def findsLinkText(driver,LinkText):
f = driver.find_elements_by_link_text(LinkText)
return f def findsPLinkText(driver,PLinkText):
f = driver.find_elements_by_partial_link_text(PLinkText)
return f def findsxPath(driver,xPath):
f = driver.find_elements_by_xpath(xPath)
return f

在其他需要用到定位方法的文件中将模块导入,且将文件所在的文件路径加入sys.path路径集中便可引用

#实现webdriver二次封装
from package import location
sys.path.append("D:\\fcj\\study\\seleniumtest\\package")
l = location

之后使用的定位方法则变成以下简洁写法:

例如:find_element_by_id()的方法

l.findId(driver,"id")

selenium + python自动化测试unittest框架学习(五)webdriver的二次封装的更多相关文章

  1. selenium + python自动化测试unittest框架学习(二)

    1.unittest单元测试框架文件结构 unittest是python单元测试框架之一,unittest测试框架的主要文件结构: File >report >all_case.py &g ...

  2. selenium + python自动化测试unittest框架学习(一)selenium原理及应用

    unittest框架的学习得益于虫师的<selenium+python自动化实践>这一书,该书讲得很详细,大家可以去看下,我也只学到一点点用于工作中,闲暇时记录下自己所学才能更加印象深刻. ...

  3. selenium + python自动化测试unittest框架学习(三)webdriver元素定位(一)

    1.Webdriver原理 webdirver是一款web自动化操作工具,为浏览器提供统一的webdriver接口,由client也就是我们的测试脚本提交请求,remote server浏览器进行响应 ...

  4. selenium + python自动化测试unittest框架学习(三)webdriver元素操作(二)

    上一篇是元素的定位,那么定位元素的目的就是对元素进行操作,例如写入文本,点击按钮,拖动等等的操作 (1)简单元素操作 简单元素操作 find_element_by_id("kw") ...

  5. selenium + python自动化测试unittest框架学习(三)webdriver对页面其他控件操作(三)

    1.对话框,下拉框 (1)对话框的有两种,一种是iframe格式的,需要switch_to_iframe()进行定位,现在大部分的对话框是div格式的,这种格式的可以通过层级定位来定位元素,先定位对话 ...

  6. selenium + python自动化测试unittest框架学习(七)随机生成姓名

    在自动化测试过程中经常要测试到添加用户的操作,每次都要输入中文,原本是找了十几个中文写成了列表,然后从列表中随机取出填入用户名文本框中,随着测试的增加,发现同名的人搜索出来一大堆,最后在网上找了个随机 ...

  7. selenium + python自动化测试unittest框架学习(四)python导入模块及包知识点

    在写脚本的时候,发现导入某些模块,经常报错提示导入模块失败,这里来恶补下python导入模块的知识点. 1.模块导入时文件查找顺序 在脚本中,import xxx模块时的具体步骤: (1)新建一个mo ...

  8. selenium + python自动化测试unittest框架学习(六)分页

    接触的项目分页的形式是以下形式: 想要获取总页数后,遍历执行翻页的功能,但由于分页是以javascript方法实现的,每次点击确定按钮后,页面就回刷新,webelement元素过期无法遍历下一个进行翻 ...

  9. selenium + python 自动化测试环境搭建

    selenium + python 自动化测试 —— 环境搭建 关于 selenium Selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操 ...

随机推荐

  1. JAVA将数字钱数转换为大写

    1.Java文件的编写 package com.cwai.xtag; import java.util.Scanner; public class Num2Rmb { private String[] ...

  2. LeetCode 第二天后续(两数相加 python3)

    # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # sel ...

  3. 前端(十一):props、state及redux关系梳理

    所谓状态机,是一种抽象的数据模型,是“事物发展的趋势”,其原理是事件驱动.广泛地讲,世界万物都是状态机. 一.状态机是一种抽象的数据模型 在react中,props和state都可以用来传递数据.这里 ...

  4. 理解B+树算法和Innodb索引

    一.innodb存储引擎索引概述: innodb存储引擎支持两种常见的索引:B+树索引和哈希索引. innodb支持哈希索引是自适应的,innodb会根据表的使用情况自动生成哈希索引. B+树索引就是 ...

  5. Hibernate入门(四)—— 查询

    一.Hibernate查询 1.Hibernate检索(查询)方式的分类 OID检索 :根据主键查询,get/load 对象导航检索 :通过一个对象获得其关联对象.[重点] Category cate ...

  6. [POI2007]EGZ-Driving Exam

    能到达所有路的充要条件是能到达左右两端的路 用vector反向建边对每条路左右分别求个最长不上升子序列 预处理出每条路向左向右分别需要多建多少路才能到达最左端和最右端 然后跑个\(\Theta(n)\ ...

  7. vue-router初涉

    概念: vue-router: vue官方路由插件. 路由: 指单页面应用的路径管理系统.在vue中都是单页应用,相当于只有一个index.html页面,所以无法使用<a>标签,我们使用路 ...

  8. 《Linux命令行与Shell脚本编程大全第2版》读书笔记

    公司说不准用云笔记了,吓得我赶紧把笔记贴到博客上先..... 近3年前的了,只有一半的章节,后面的没空记录了.... 第1章 可以cat /proc/meminfo文件来观察Linux系统上虚拟内存的 ...

  9. Java中的数据类型转换

    先来看一个题: Java类Demo中存在方法func0.func1.func2.func3和func4,请问该方法中,哪些是不合法的定义?( ) public class Demo{ float fu ...

  10. Fragment 底部菜单栏

    实例讲解一 实例效果图: 点击wifi“按钮”显示的界面: 项目结构 具体代码编写 1.左边页面布局界面,frag_list.xml: <?xml version="1.0" ...