使用webdriverwait封装查找元素方法
对于selenium原生的查找元素方法进行封装,在timeout规定时间内循环查找页面上有没有某个元素
这样封装的好处:
1.可以有效提高查找元素的效率,避免元素还没加载完就抛异常
2.相对于time.sleep和implictly_wait更节省时间
3.大大的减少重复代码,使得用例书写更简洁
代码:
#coding:utf-8 #封装元素方法
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import *
import time
class Base():
def __init__(self,driver):
self.driver=driver #查找元素
def find_element(self,locator):#locator参数是定位方式,如("id", "kw"),把两个参数合并为一个,*号是把两个参数分开传值
element=WebDriverWait(self.driver,20,0.5).until(lambda x:x.find_element(*locator))
return element
#判断元素是否存在
def is_exists(self,locator):
try:
WebDriverWait(self.driver,20,0.5).until(lambda x:x.find_element(*locator))
return True
except:
return False
#判断元素是否已经不存在,不存在了返回True,还存在就返回False
def element_is_disappeared(self,locator,timeout=30):
is_disappeared=WebDriverWait(self.driver,timeout,1,(ElementNotVisibleException)).until_not(lambda x:x.find_element(*locator).is_displayed())
print is_disappeared #封装一个send_keys
def send_keys(self,locator,text):
self.find_element(locator).send_keys(text) #封装一个click
def click(self,locator):
self.find_element(locator).click() #运行主函数
if __name__=='__main__':
driver=webdriver.Chrome()
driver.get("https://www.baidu.com")
#实例化
base=Base(driver)
#定位输入框
input_loc=("id","kw")
#通过实例调用find_element来发送
base.send_keys(input_loc,"selenium")
#点击按钮
button_loc=("id","su")
base.click(button_loc) time.sleep(3)
driver.quit() *可根据实际情况编写方法
使用webdriverwait封装查找元素方法的更多相关文章
- DOM 之 document 查找元素方法
DOM 之 document 查找元素方法 getElementById("idName"); // 始终取得第一个 idName 的元素 getElementsByTagName ...
- 封装查找元素以及集成日志输出,Base模块
关于查找元素封装,Base模块 """ Selenium 封装基类 封装查找元素以及集成日志输出 """ from HTMLReport i ...
- selenide 自动化测试进阶一: 查找元素和相关操作
基础环境配置和举例请移步:https://www.cnblogs.com/davice/p/9298742.html 提到自动化有些测试同学就会问,我会使用工具录制做自动化,我会用工具或插件识别元素. ...
- 类 java.util.Collections 提供了对Set、List、Map进行排序、填充、查找元素的辅助方法。
类 java.util.Collections 提供了对Set.List.Map进行排序.填充.查找元素的辅助方法. 1. void sort(List) //对List容器内的元素排序,排序的规 ...
- jq 方法函数(淡入淡出,查找元素,过滤)遍历
淡入淡出:fadeIn fadeOut fadeToggle fadeTo 淡入:fadeIn(speed[,callback]) 速度和回调函数 回调函数可以写匿名函数,或者方法名不加括号. s ...
- PHP提高in_array查找元素的方法
PHP提高in_array查找元素的方法<pre><?php$arr = array(); // 创建10万个元素的数组for($i=0; $i<100000; $i++){ ...
- <自动化测试>之<selenium API 查找元素操作底层方法>
搜罗了一些查找元素的除标准语句外,另外的语句使用方法,摘自 开源中国 郝云鹏driver = webdriver.Chrome(); 打开测试页面 driver.get( "http://b ...
- selenium_学习笔记——二次封装常用的方法
# coding = utf-8 ''' 二次封装元素方法 加入循环查找方法,提高查找元素的稳定性 ''' from selenium import webdriver from selenium.w ...
- JavaScript 字符串函数 之查找字符方法(一)
1.JavaScript查找字符方法 首先看一张 有关字符串函数的查找字符的方法图 接下里补充里面的方法说明 2.charAt() charAt() 方法返回字符串中指定位置的字符 语法 ...
随机推荐
- 用vue开发顶端粘滞效果的页面
概述 通常一个长的页面,需要滚动浏览,有部分重要信息会随着滚动而看不见,因此需要粘滞在顶端,而又不影响滚动浏览,这个demo基于vue2,实现这个需求. 详细 代码下载:http://www.demo ...
- Content Editor Webpart(一)引用JQuery
SharePoint里面自带了一个Content Editor Webpart, 使用这个webpart.能够方便的往页面上加入随意的内容(HTML,css, JS).以此来达到往页面加入自己定义内容 ...
- Ubuntu 14.04主机上部署k8s集群
部署结构 3台虚拟机,其中1台作为master,2台作为minion,都安装了最新版本的docker engine(目前是1.11.2) k8s版本是1.3.0 主要问题 部署步骤基本按照官方文档:h ...
- Ubuntu14.04下安装docker 1.9
有以下几种方式: 1. 通过系统自带包安装(可能不是最新版) $ sudo apt-get update $ sudo apt-get install -y docker.io $ sudo ln - ...
- Atitit.软件控件and仪表盘(23)--多媒体子系统--视频输出切换控制cvbs av s-video Ypbpr pal ntsc
Atitit.软件控件and仪表盘(23)--多媒体子系统--视频输出切换控制cvbs av s-video Ypbpr pal ntsc 1. CVBS是AV接口 1 2. S-Video S端子 ...
- Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode
Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode 不个网页title保存成个个文件的时候儿有无效字符的问题... 通常两个处理方式 ...
- python学习之yummain模块
定义:`yum`的命令行接口. yummain.main(args) Run the yum program from a command line interface. yummain.hotsho ...
- python内置函数之print()
定义:将值打印到一个流对象,或者默认打印到sys.stdout. 语法: print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=Fal ...
- rpc 理解
RPC=Remote Produce Call 是一种技术的概念名词. HTTP是一种协议,RPC可以通过HTTP来实现,也可以通过Socket自己实现一套协议来实现. rpc是一种概念,http也是 ...
- jstl format date
使用fmt函数需在jsp中引入 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" ...