使用webdriverwait封装查找元素方法

对于selenium原生的查找元素方法进行封装,在timeout规定时间内循环查找页面上有没有某个元素

这样封装的好处:

1.可以有效提高查找元素的小吕,避免元素还没加载完就抛异常

2.相对于time.sleep和implictly_wait更节省时间

3.大大的减少重复代码,使得用例书写更简洁

代码:

#coding:utf-8

#封装元素方法from selenium import webdriverfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.common.exceptions import *import timeclass 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()

*可根据实际情况编写方法
时间: 2024-08-15 00:19:28

使用webdriverwait封装查找元素方法的相关文章

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

关于查找元素封装,Base模块 """ Selenium 封装基类 封装查找元素以及集成日志输出 """ from HTMLReport import logger from selenium import webdriver from selenium.webdriver.remote.webelement import WebElement class Base(object): def __init__(self, driver: webd

appium for android 查找元素方法总结

使用appium测试app自动化查找元素时比较麻烦,没有selenium查找web页面元素方便, 并且局限性也比较高,使用起来不是太灵活. 那下面介绍下我们一般经常使用到的一些查找元素的方法(已锤子手机为例). 有两个工具可以用来查找元素:安卓sdk自带的uiautomator viewer:appium最新版1.0.2.   建议使用uiautomator viewer,个人感觉使用起来要方便些,包括复制元素的值也比较方便. 先链接锤子手机: 方法有很多,: 通过xpyth定位:findEle

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

基础环境配置和举例请移步:https://www.cnblogs.com/davice/p/9298742.html 提到自动化有些测试同学就会问,我会使用工具录制做自动化,我会用工具或插件识别元素.但是这些并不能满足做自动化日常的使用,要学通自动化的每一步,有兴趣的同学可以和我一起进入深入学习. 识别元素方法:xpaht\css 比较常用.我们这里介绍一下xpath的使用. xpath具体学习教程请参考:http://www.w3school.com.cn/xpath/index.asp XP

<<< Jquery查找元素、选择器使用方法总结

$("#myDiv"); //根据给定的ID匹配一个元素,用于搜索id 属性中给定的值,id属性必须是唯一的 $("div"); //根据给定的元素名匹配所有元素,搜索指向dom节点的标签名 $(".myClass"); //根据给定的类匹配元素,用以搜索的类.一个元素可以有多个类,只要有一个符合就能被匹配到 $("div,.myClass"); //将每一个选择器匹配到的元素合并后一起返回,可以指定多个元素 返回示例: &l

10.0 花里胡哨的各个方位滑动查找元素

在介绍滑动查找元素之前,请先容许我插上一嘴--之前章节有更新过  Uiobject uicollection uiselector   这里还有一个新东西叫做  uiscrollable这个class它里面是封装了所有的滑动处理的相关操作! name这个叫做uiscrollable的类里面有那些东西了: Scrollintoview-----获取某个可滑动区域,然后滑动这个区域里面的元素查找我们所需要的元素 #后面的text查找条件可以用组合查找也可以用 textcontains 关键之查找te

javascript中通过className灵活查找元素 例如我们要把根据class来进行修改样式

原文:javascript中通过className灵活查找元素 例如我们要把根据class来进行修改样式 一.背景:一个表单中,要修改一些li中有class=box的样式,将它的background设置为red红色.一般的做法是我们可以先找到父级元素 ,然后由父级元素找到所有相关tagName,最后,来一个if判断,如果class属性为box,则修改之 var oUl = document.getElementById("ul1");                          

WebDriver定位元素方法

如果把页面上的元素看作人的话,在现实世界如何找到某人呢?方法有三: 一.通过人本身的属性,例如他的姓名,手机号,身份证号,性别,这些可区别他人的属性.在web页面上的元素也有这些属性,例如,id.name.class name.tag name等. 二.在找查某人的时候可以通过位置属性,例如,x国.x市.x路.x号.Xpath和CSS就提供了这种以标签名为层级关系的定位方式. 三.可以借助相关他人的属性来找到某人,例如,我没有小明的联系方式,但我有他爸爸的手机号,那么通过他爸爸手机号也可以找到小

[ jquery 过滤器 nextUntil([exp|ele][,fil]) ] 此方法用于在选择器的基础之上搜索被选元素的后面的所有同级元素,方法返回 selector 与 stop 之间的每个元素之后的所有同级元素,并且提供第二个参数来用于实现过滤效果,多个参数使用逗号相隔

此方法用于在选择器的基础之上搜索被选元素的后面的所有同级元素,方法返回 selector 与 stop 之间的每个元素之后的所有同级元素,并且提供第二个参数来用于实现过滤效果,多个参数使用逗号相隔,参数解释如下: 概述: 查找当前元素之后所有的同辈元素,直到遇到匹配的那个元素为止. 如果提供的jQuery代表了一组DOM元素,.nextUntil()方法也能让我们找遍所有元素所在的DOM树,直到遇到了一个跟提供的参数匹配的元素的时候才会停下来.这个新jQuery对象里包含了下面所有找到的同辈元素

查找元素在list中的位置以及折半查询

问题 查找某个值在list中的位置 解决思路 可以用折半查询的方法解决此问题. 解决(Python) #! /usr/bin/env python #coding:utf-8 #折半查找某个元素在list中的位置 def half_search(lst,value,left,right): length = len(lst) while left<right: middle = (right-left)/2 if lst[middle]>value: right = middle-1 elif