对于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封装查找元素方法的更多相关文章

  1. DOM 之 document 查找元素方法

    DOM 之 document 查找元素方法 getElementById("idName"); // 始终取得第一个 idName 的元素 getElementsByTagName ...

  2. 封装查找元素以及集成日志输出,Base模块

    关于查找元素封装,Base模块 """ Selenium 封装基类 封装查找元素以及集成日志输出 """ from HTMLReport i ...

  3. selenide 自动化测试进阶一: 查找元素和相关操作

    基础环境配置和举例请移步:https://www.cnblogs.com/davice/p/9298742.html 提到自动化有些测试同学就会问,我会使用工具录制做自动化,我会用工具或插件识别元素. ...

  4. 类 java.util.Collections 提供了对Set、List、Map进行排序、填充、查找元素的辅助方法。

      类 java.util.Collections 提供了对Set.List.Map进行排序.填充.查找元素的辅助方法. 1. void sort(List) //对List容器内的元素排序,排序的规 ...

  5. jq 方法函数(淡入淡出,查找元素,过滤)遍历

    淡入淡出:fadeIn fadeOut fadeToggle fadeTo 淡入:fadeIn(speed[,callback])   速度和回调函数 回调函数可以写匿名函数,或者方法名不加括号. s ...

  6. PHP提高in_array查找元素的方法

    PHP提高in_array查找元素的方法<pre><?php$arr = array(); // 创建10万个元素的数组for($i=0; $i<100000; $i++){ ...

  7. <自动化测试>之<selenium API 查找元素操作底层方法>

    搜罗了一些查找元素的除标准语句外,另外的语句使用方法,摘自 开源中国 郝云鹏driver = webdriver.Chrome(); 打开测试页面 driver.get( "http://b ...

  8. selenium_学习笔记——二次封装常用的方法

    # coding = utf-8 ''' 二次封装元素方法 加入循环查找方法,提高查找元素的稳定性 ''' from selenium import webdriver from selenium.w ...

  9. JavaScript 字符串函数 之查找字符方法(一)

    1.JavaScript查找字符方法   首先看一张 有关字符串函数的查找字符的方法图 接下里补充里面的方法说明 2.charAt()     charAt() 方法返回字符串中指定位置的字符 语法 ...

随机推荐

  1. java反射--通过反射了解集合泛型的本质

    通过Class,Method来认识泛型的本质 package com.reflect; import java.lang.reflect.Method; import java.util.ArrayL ...

  2. javascript 的继承实例

    shape.prototype = { getEdge:function(){ return this.edge; }, getArea:function(){ return this.a*this. ...

  3. 站点CSS样式不起作用,或仅仅有一部分起作用?随手记

    事件:网页中使用了相同的样式,下半部分正常显示,上半部分样式所有丢失不能显示. 解决:改动了相应的CSS样式文件的编码 这个是最没有想到的解决的方法. 怎样调试:通过右键页面查看编码为UTF-8 或 ...

  4. 企业版证书打包APP发布,安装后闪退问题解决。

    企业版证书打包APP发布,安装后闪退问题解决. 我现在就碰到这个问题,只要项目与Swift沾上边的,都会出问题. 如果我们是直接使用开发者证书进行真机调试,那么就不会出现问题,像往常一样好.但如果我们 ...

  5. proc文件系统分析

    来源: ChinaUnix博客 日期: 2008.01.03 11:46 (共有条评论) 我要评论   二 proc文件系统分析  根据前面的分析,我们可以基本确定对proc文件系统的分析步骤.我将按 ...

  6. npoi IWorkbook HSSFWorkbook XSSFWorkbook 拥有 IEnumerator GetEnumerator(); 方法 可以遍历workbook 每个元素为每个sheet页

  7. C#:文件操作(待补充)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...

  8. 权限管理系统(四):RBAC权限模型分类介绍

    RBAC是Role-BasedAccess Control的英文缩写,意思是基于角色的访问控制.RBAC认为权限授权实际上是Who.What.How的问题.在RBAC模型中,who.what.how构 ...

  9. 使用ClipboardManager碰到Can&#39;t create handler inside thread that has not called Looper.prepare()

    直接放上我的代码.希望能给碰到相同问题的朋友提供帮助 Runnable runnable = new Runnable() { public void run() { ClipboardManager ...

  10. Hp && Dell服务器硬件监控

    HP 安装HP工具: yum install hpssacli 1 查看控制器状态 raid卡型号等hpssacli ctrl all show status 2 查看硬盘类型.大小 raid级别.状 ...