首页 > 其他分享 >selenium13_二次封装

selenium13_二次封装

时间:2024-07-04 13:08:25浏览次数:16  
标签:封装 二次 self driver selenium13 ele locator return def

复制代码

class Base():
    def __init__(self,driver):
        self.driver = driver
        self.timeout = 10
        self.t = 0.5

    #查找元素的另一种方法:
    def findElementNew(self, locator):
        #定位到元素,返回元素对象,没有定位到返回timeout异常
        ele = WebDriverWait(self.driver,self.timeout,self.t).until(EC.presence_of_element_located(locator))    #  *locator取变量locator的值,locator的值的类型是元祖
        return ele

    #封装定位方法,加等待,用10s的时间去查找元素,间隔查找时间05s
    def findElenment(self, locator):   #locator变量是定位器,给的值比如id和value,等同于:查找元素通过id的值value   findElement(By.ID, "tests")
        ele = WebDriverWait(self.driver,self.timeout,self.t).until(lambda x: x.find_element(*locator))    #  *locator取变量locator的值,locator的值的类型是元祖
        return ele

    def findElements(self, locator):   #locator变量是定位器,给的值比如id和value,等同于:查找元素通过id的值value   findElement(By.ID, "tests")
        try:
            eles = WebDriverWait(self.driver,self.timeout,self.t).until(lambda x: x.find_elements(*locator))    #  *locator取变量locator的值,locator的值的类型是元祖
            return eles
        except:
            return []

    #封装sendKeys方法
    def sendKeys(self,locator, text):
        ele = self.findElenment(locator)   #通过locator(例如id和value)定位到元素
        ele.send_keys(text)   #传值

    #封装click方法
    def click(self, locator):
        ele = self.findElenment(locator)  #通过locator(例如id和value)定位到元素
        ele.click()  #点击

    def click_by_index(self, locator, index):
        ele = self.findElements(locator)[index]
        ele.click()

    def clear(self, locator):  #清除方法
        ele = self.findElenment(locator)
        ele.clear()

    def isSelected(self, locator):  #判断元素被选中
        ele = self.findElenment(locator)
        sele = ele.is_selected()
        return sele

    def isElementExist(self, locator):  #判断元素是否存在
        try:
            ele = self.findElenment(locator)
            return True
        except:
            return False

    def isElementExist2(self, locator):  #判断元素是否存在
        eles = self.findElements(locator)
        n = len(eles)
        if n == 0:
            return False
        elif n == 1:
            return True
        else:
            print("定位到 %s 个元素" %n)
            return True

    def isTitle(self, _title):
        '''返回bool值'''
        try:
            result = WebDriverWait(self.driver,self.timeout,self.t).until(EC.title_is(_title))
            return result
        except:
            # print("实际title:", self.driver.title)
            return False

    def isTitleContains(self, _title):
        '''返回bool值'''
        result = WebDriverWait(self.driver,self.timeout,self.t).until(EC.title_contains(_title))
        return result

    def textToBePresentInElement(self, locator, _text):
        '''返回bool值'''
        try:
            result = WebDriverWait(self.driver,self.timeout,self.t).until(EC.text_to_be_present_in_element(locator, _text))
            return result
        except:
            return False

    def textToBePresentInElementValue(self, locator, _value):
        try:
            result = WebDriverWait(self.driver,self.timeout,self.t).until(EC.text_to_be_present_in_element_value(locator, _value))
            return result
        except:
            return False

    def alertIsPresent(self):   #存在alert返回元素对象
        try:
            result = WebDriverWait(self.driver,self.timeout,self.t).until(EC.alert_is_present())
            return result
        except:
            return False

    def getText(self, locator):
        try:
            text = self.findElenment(locator).text
            return text
        except:
            return ""

    def move_mouse_to(self, locator):
        '''封装鼠标悬停方法'''
        ele = self.findElenment(locator)
        ActionChains(self.driver).move_to_element(ele).perform()

    def select_by_index(self, locator, index=0):
        ele = self.findElenment(locator)
        Select(ele).select_by_index(index)

    def select_by_value(self, locator, value):
        ele = self.findElenment(locator)
        Select(ele).select_by_value(value)

    def select_by_text(self, locator, text):
        ele = self.findElenment(locator)
        Select(ele).select_by_visible_text(text)

    def js_scroll_end(self):
        '''滚动到底部'''
        js_heig = "window.scrollTo(0, document.body.scrollHeight)"
        self.driver.execute_script(js_heig)

    def js_scroll_top(self):
        '''滚动到顶部'''
        js = "window.scrollTo(0, 0)"
        self.driver.execute_script(js)

    def js_focus(self, locator):
        '''聚焦元素'''
        target = self.findElenment(locator)
        self.driver.execute_script("arguments[0].scrollIntoView();", target)

标签:封装,二次,self,driver,selenium13,ele,locator,return,def
From: https://www.cnblogs.com/elaine888/p/18283678

相关文章

  • 禅道二次开发——禅道zentaoPHP框架扩展机制——对控制层扩展
    对现有模块的control层的扩展有两种,一种是覆盖现有的方法,一种是增加新的方法。下面我们来看下如何进行扩展。......
  • [JLU] 数据结构与算法上机题解思路分享-课程设计第一次与第二次上机
    前言首先,请务必自己尽全力尝试实现题目,直接看成品代码,思维就被拘束了,也很容易被查重。这里只是思路解析的博客,代码仓库在JLU_Data_Structures_Record希望你能在这里找到你想要的:)第一次上机A网络布线分数50作者朱允刚单位吉林大学2024年亚洲杯足球赛刚刚落下帷幕,......
  • apktool二次打包
    1、反编译工具apktool的下载、安装、配置下载地址:https://apktool.org/ 2、反编译2.1、apktooldD:\ceshi\Test.apk其中“D:\ceshi\Test.apk”为apk的路径该指令反编译出来的文件路径为:C:\Users\nan\Test2.2、apktoold-oD:\ceshi\TestD:\ceshi\Test.apk......
  • PHP 函数封装,常用
    PHP封装一个echo函数, 字符串前自动加"\t";字符串结尾自动加.PHP_EOL 制表符://用法echoTab('abcdefg;',2);//默认一个制表符"\t",#tab为缩进制表符数量;functionechoTab($data,$tab=1){$data=str_repeat("\t",$tab).$data.PHP_EOL;echo$data;......
  • WordPress付费进群V2主题,多种引流方法,引私域二次变现
    全新前端UI界面,多种前端交互特效让页面不再单调,进群页面群成员数,群成员头像名称,每次刷新页面随机更新不重复,最下面评论和点赞也是如此随机刷新不重复进群页面简介,群聊名称,群内展示,常见问题后台一键开关方便控制,付费进群系统后台自定义你的内容,底部显示你所设置的进群金额,也......
  • 24_封装
    04_封装程序追求高内聚,低耦合属性私有,get/setpublicclassStudent{privateStringname;privateintage;privatechargender;publicStringgetName(){returnthis.name;}publicvoidsetName(Stringname){this.na......
  • 在Windows操作系统中,与文件系统进行交互主要通过一系列的API函数来实现,这些函数包括底
    操作文件系统API与操作系统的文件系统进行交互,涉及到底层的文件系统操作和文件属性管理。不同的操作系统提供了不同的API和机制来执行这些操作,但基本的原理和流程大致相似。文件系统API的基本操作1.文件时间戳(创建时间、修改时间、访问时间)创建时间(CreationTime):表示文件被创......
  • UG NX二次开发(C#)-根据草图创建拉伸特征(UFun+NXOpen)
    文章目录1、前言2、在UGNX中创建草图,然后创建拉伸特征3、基于UFun函数的实现4、基于NXOpen的实现代码1、前言UGNX是基于特征的三维建模软件,其中拉伸特征是一个很重要的特征,有读者问如何根据草图创建拉伸特征,我在这篇博客中讲述一下草图创建拉伸特征的UGNX二......
  • [JLU] 数据结构与算法上机题解思路分享-第二次上机
    前言首先,请务必自己尽全力尝试实现题目,直接看成品代码,思维就被拘束了,也很容易被查重。这里只是思路解析的博客,代码仓库在JLU_Data_Structures_Record希望你能在这里找到你想要的:)正文A二叉树的创建与遍历分数10作者朱允刚单位吉林大学通过带空指针信息的先根序列(......
  • 超详细的 C++中的封装继承和多态的知识总结<1.封装>
    引言  小伙伴们都知道C++面向对象难,可是大家都知道,这个才是C++和C的真正区别的地方,也是C++深受所有大厂喜爱的原因,它的原理更接近底层,它的逻辑更好,但是学习难度高,大家一定要坚持下来呀,本章呢对于C++有关的知识开始讲解封装继承和多态。好了啦废话不多说,跟着小杨一起开始......